Phantomjs网站自动化导致我被阻止IP

时间:2015-05-14 16:19:08

标签: phantomjs

我正在使用PhantomJS来自动化页面。我所做的是:

    do{
    console.log(i);
    i++;

    page.open(url);
    do { phantom.page.sendEvent('mousemove'); } while (page.loading);

    if(page.injectJs('./Search.js') == false){
        console.log("Search.js Failed")
    }

    var links = page.evaluate(function(json){
        return search(json)
    },json)
    console.log(links);

} while(links == "")

所以这导致我重复打开网站,直到我正在寻找的东西出现。但这也导致我被禁止知识产权。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的IP可能会被禁止,因为该脚本会在很短的时间内向网站发出太多请求。因此,您需要限制请求,在它们之间应用暂停。

我会像这样重写你的脚本:

var page = require('webpage').create();
var url = "http://www.website.tld/";
var json = {"some" : "json"};
var i = 0;
var links;

// We abstract main code to a function so that we can call it 
// again and again from itself
function getlinks (url, json) {

    i++;
    console.log(i);

    page.open(url);
    do { phantom.page.sendEvent('mousemove'); } while (page.loading);

    if(page.injectJs('./Search.js') == false){
        console.log("Search.js Failed")
    }

    var links = page.evaluate(function(json){
        return search(json);
    }, json);

    if(links == "")
    {
        // No links scraped yet, so we wait for 3 seconds and try again
        setTimeout(function(){
            getlinks(url, json);
        }, 3000)
    }
    else
    {
        console.log(links);
        phantom.exit();
    }
}

getlinks(url, json);