有没有任何方法可以加载和操作外部url
Is there any way of loading and manipulating a external url?
我想加载外部内容(来自另一个域)并模拟导航,做一些事情,比如用程序点击和填写表单,可能使用JQuery。
更好的解释是:我需要"自动"浏览3个页面,第一个是登录区域,我应该在那里填写登录/通过字段并提交。在最后一个例子中,我必须填写一些输入字段,再次提交,然后从报告中获取所有html数据。
我尝试使用IFRAME和Jquery的contents(),然后我意识到由于明显的XSS安全问题,我无法做到这一点。(http://jsfiddle.net/TbMyx/4/)。
在尝试这种方式(客户端、js、Iframe等)之前,我也尝试过使用Java。将POST/GET请求发送到Servlet中,我也没有成功。
对此有什么想法吗?至少,这是可能的任务?我对此有点消极,我认为这真的不可能,根据我目前的知识,我只需要一些确认
是的,这是可能的。它被称为Web Scratching,并且相当常见。
正如您所了解的,由于安全限制,在客户端使用javascript是不可能做到这一点的。
在服务器端,您有两个选项。a) 加载一个实际的浏览器,像用户一样浏览网站,或者b)使用无头浏览器,这基本上是一个模拟真实浏览器的库。
使用无头浏览器一般来说,这是一种更快、更容易的方法,但它可能不适用于依赖javascript的复杂网站。
对于java来说,HTMLUnit是一个很棒的库。将浏览器中的fiddler请求/响应放在手边,因为浏览器可能会发送与HtmlUnit不同的cookie或标头。一般来说,如果您匹配浏览器发送的所有标头,网站将正确响应。
使用实际浏览器只有在尝试使用无头浏览器失败时才使用此选项。这种方法会像用户一样打开浏览器并浏览网站。
为此,您可以使用Selenium/WebDriver。请注意,在服务器环境中运行浏览器实际上资源昂贵,而且需要花费更多时间。
不,除非您将安全设置降低到PLEASE HACK MY BANK ACCOUNT级别,否则使用JavaScript是不可能的。
你可以像服务器上的浏览器一样工作,只要他们不会因为你是机器人而指责你。因此,你用JAVA发帖可能失败了,或者你没有在帖子中发送正确的cookie/会话信息。获取Fiddler,并监控流量,并尝试重新创建它。
我使用Selenium与Java中的web表单进行交互。
一旦设置好,就可以很容易地启动浏览器,将值插入各种输入框,并以自动方式单击按钮。
我知道这正是你现在想要的,但试试硒。
是的,你不能。
通过更改外部内容(打开的窗口、框架)的url可以进行导航。
如果您在页面上复制(静态)表单,并将其发布到其他域(可能针对隐藏的iframe),则可以填写表单。
但你永远无法访问其他页面的内容,可能是"来自报告的html数据",也可能是"程序点击"的dom元素。
- 如何加载外部HTML内容以由此JS代码操作
- 表单操作 一个外部 JavaScript 函数
- 在加载外部页面时运行javascript以在Firefox中操作它
- 如何通过操作脚本获取和设置外部 HTML 内容中的选定单选按钮
- 如何从外部文件运行函数作为表单的操作
- 如何从表单外部调用表单的post操作
- 获取外部URL的页面源,并使用javascript/jquery进行操作
- 加载外部XML文件后对其进行操作
- 如何将内联js操作传递到外部js文件中
- 有没有任何方法可以加载和操作外部url
- 当内部函数异步执行某些操作时,如何从外部函数的回调返回值
- 在JavaScript纯函数中使用外部数据/操作
- 无法操作由AJAX load()加载的外部HTML的DOM元素
- 在文档上执行写操作:除非显式打开外部脚本,否则不可能从异步加载的外部脚本写入文档
- 使用外部POST操作验证Django表单
- 我可以用JQuery操作外部HTML文档吗?
- 如何从外部HTML应用iframe的拖放操作
- 在浏览器操作弹出窗口中显示外部内容
- 在对象外部执行onclick操作
- 聚合物1.0和外部DOM操作库