如何在线操纵网站?

时间:2016-06-06 16:08:23

标签: javascript jquery dom

我需要从其他网站获取内容并在我的网站上显示该内容。难以理解的是,我需要的内容是生成的,所以在获得我需要的内容之前,我需要在其他网站上提供输入和点击按钮。我找到了可以做到这一点的在线应用程序,我想知道他们是如何做到的。这些网站:

  • dexi.io
  • import.io

上述网站将目标网站加载到用户的浏览器窗口中,然后使用一些脚本键入输入和单击按钮。我试图通过资源监视器查看他们的源代码,但没有运气。世界上你怎么样:

  1. 将其他网站加载到用户的浏览器中(可能是iframe?)
  2. 输入
  3. 点击按钮
  4. 我不知道是否有可以做到这一点的事情。 Selenium Webdriver不提供客户端功能。也许是PhantomJS或其他一些DOM操纵工具?我需要一个地方开始,并感谢任何指导,谢谢!

2 个答案:

答案 0 :(得分:3)

如果您习惯于编写PHP,可以查看Gouette之类的内容。它实现起来非常简单,可以单击链接,输入输入等,文档也很不错。

答案 1 :(得分:2)

如果您发出Ajax请求,则会获取页面的HTML文本作为响应。例如:

var x = new XMLHttpRequest;
x.open('GET', 'URL_HERE', true);
x.onreadystatechange = function() {
    if(this.readyState === 4) {
        if(this.status === 200) {
            alert(this.response);
        }else if(this.status === 0) {
            alert("NOT_ALLOWED: Can't cross this site URL.");
        }else{
            // Request error ; >= 500 || 404 || ...
        }
    }
}
x.send();

如果完成后请求状态为0,则不允许您访问其他站点。但是,可以访问一些。

因此,您可以将HTML文本设置为iframe内部(例如iframe.contentWindow.document.write(x.response);)。

添加按钮和脚本

添加一些按钮很容易 - 只需在响应文本的末尾添加一个带有模糊ID的文本的HTML容器,包括按钮的HTML。您必须使用更强大的z-index保留容器的特色。脚本可以添加到任何地方,但最好在响应文本的末尾添加它们。

iframe.contentWindow.document.write("<style>#_my_container_ {z-index: 99999;}</style><div id="_my_container_"><button>Hello</button><script type="text/javascript" src="..."></script></div>");

如果网站修改了他们的网页正文,您的容器可能会消失或者事件可能会出现问题 - 但没有网站会这样做,只会弄乱网站。