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

Phantomjs网站的自动化导致我被IP阻止,phantomjs,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") }

我正在使用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 == "")

因此,这导致我重复打开网站,直到我要寻找的出现。但这也导致我被禁止使用IP。我能做些什么来解决这个问题?

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

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

var page=require('webpage').create();
变量url=”http://www.website.tld/";
var json={“some”:“json”};
var i=0;
var链接;
//我们将主代码抽象为一个函数,以便调用它
//一次又一次
函数getlinks(url、json){
i++;
控制台日志(i);
页面打开(url);
执行{phantom.page.sendEvent('mousemove');}while(page.loading);
if(page.injectJs('./Search.js')==false){
console.log(“Search.js失败”)
}
var links=page.evaluate(函数(json){
返回搜索(json);
},json);
如果(链接==“”)
{
//还没有链接,所以我们等待3秒钟,然后再试一次
setTimeout(函数(){
getlinks(url,json);
}, 3000)
}
其他的
{
控制台日志(链接);
phantom.exit();
}
}
getlinks(url,json);