有没有任何方法可以加载和操作外部url

Is there any way of loading and manipulating a external url?

本文关键字:操作 外部 url 加载 任何 方法 有没有      更新时间:2023-09-26

我想加载外部内容(来自另一个域)并模拟导航,做一些事情,比如用程序点击和填写表单,可能使用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元素。