Javascript 尝试使用PhantomJS处理网页时出现问题

Javascript 尝试使用PhantomJS处理网页时出现问题,javascript,phantomjs,Javascript,Phantomjs,我正在尝试制作一个用于SEO目的的爬虫程序,但我似乎无法让PhantomJS至少下载这个特定页面: 如果我使用cURL,它可以正常工作(但显然不处理javascript): 这是运行它的结果: ✓ 1347:0 /cherrytech/js-crawler root› phantomjs crawler.js Request { "headers": [ { "name": "User-Agent", "value": "M

我正在尝试制作一个用于SEO目的的爬虫程序,但我似乎无法让PhantomJS至少下载这个特定页面:

如果我使用cURL,它可以正常工作(但显然不处理javascript):

这是运行它的结果:

✓ 1347:0 /cherrytech/js-crawler root› phantomjs crawler.js
Request {
    "headers": [
        {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A406 Safari/8536.25"
        },
        {
            "name": "Accept",
            "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        }
    ],
    "id": 1,
    "method": "GET",
    "time": "2014-09-16T16:02:24.426Z",
    "url": "https://tablet.euroslots.com/home/"
}
Unable to load resource (#1URL:https://tablet.euroslots.com/home/)
Error code: 2. Description: Connection closed
Response (#1, stage "end"): {"contentType":null,"headers":[],"id":1,"redirectURL":null,"stage":"end","status":null,"statusText":null,"time":"2014-09-16T16:02:24.763Z","url":"https://tablet.euroslots.com/home/"}
<html><head></head><body></body></html>
✓ 1347:0/cherrytech/js crawler root›phantomjs crawler.js
请求{
“标题”:[
{
“名称”:“用户代理”,
“值”:“Mozilla/5.0(iPad;CPU OS 6_0,如Mac OS X)AppleWebKit/536.26(KHTML,如Gecko)版本/6.0 Mobile/10A406 Safari/8536.25”
},
{
“名称”:“接受”,
“值”:“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”
}
],
“id”:1,
“方法”:“获取”,
“时间”:“2014-09-16T16:02:24.426Z”,
“url”:”https://tablet.euroslots.com/home/"
}
无法加载资源(#1URL:https://tablet.euroslots.com/home/)
错误代码:2。描述:连接已关闭
响应(#1,stage“end”):{“contentType”:null,“headers”:[],“id”:1,“redirectURL”:null,“stage”:“end”,“status”:null,“statusText”:null,“time”:“2014-09-16T16:02:24.763Z”,“url”:https://tablet.euroslots.com/home/"}

尝试使用--ssl protocol=any调用phantomjs

我也有同样的问题,一周前有一个外部网站在运行

所以我搜索了一下,发现了一个相关的问题。它帮助我研究了phantomjs的嵌入式Qt:它默认在SSLv3中强制新连接,这对于旧站点来说太新,或者对于新站点来说太旧(但在Qt4.8.4发布时是一个相当合理的默认值)

使用“any”,您会告诉phantomjs尝试所有协议,这将帮助您通过测试。它将尝试比SSLv3更安全的协议,但也比SSLv3更不安全(SSLv3处于中等范围)。因此,如果“any”起作用,那么您应该尝试强制使用比SSLv3更安全的值,而不是让“any”。在我的例子中,指定--ssl protocol=tlsv1起作用

我猜最近的SSL问题(goto fail、heartbleed、poodle等)让很多网站升级了服务器,现在拒绝了SSLv3连接。
但是,如果您的服务器使用的是比SSLv3旧的协议,请保留“any”(以及所有相关的安全风险…)。

尝试使用--ssl protocol=any调用phantomjs

我也有同样的问题,一周前有一个外部网站在运行

所以我搜索了一下,发现了一个相关的问题。它帮助我研究了phantomjs的嵌入式Qt:它默认在SSLv3中强制新连接,这对于旧站点来说太新,或者对于新站点来说太旧(但在Qt4.8.4发布时是一个相当合理的默认值)

使用“any”,您会告诉phantomjs尝试所有协议,这将帮助您通过测试。它将尝试比SSLv3更安全的协议,但也比SSLv3更不安全(SSLv3处于中等范围)。因此,如果“any”起作用,那么您应该尝试强制使用比SSLv3更安全的值,而不是让“any”。在我的例子中,指定--ssl protocol=tlsv1起作用

我猜最近的SSL问题(goto fail、heartbleed、poodle等)让很多网站升级了服务器,现在拒绝了SSLv3连接。
但是,如果您的服务器使用的是比SSLv3旧的协议,请保留“any”(以及所有相关的安全风险…)。

您也可以注册到
onResourceError
。您将看到连接已关闭。我不知道为什么<代码>--web安全性=false和
--ignore ssl errors=true
不执行任何操作。您也可以尝试代替phantomjs。可能是幻影限制我试过CasperJS,它也有同样的功能。):我刚刚更新了代码以注册到
onResourceError
尝试升级Phantomjs如1.9.8您也可以注册到
onResourceError
。您将看到连接已关闭。我不知道为什么<代码>--web安全性=false和
--ignore ssl errors=true
不执行任何操作。您也可以尝试代替phantomjs。可能是幻影限制我试过CasperJS,它也有同样的功能。):我刚刚更新了代码以注册到
onResourceError
尝试升级Phantomjs,例如1.9.8,这可能就是“答案”。自heartbleed以来,SSLv3是一个糟糕的默认值!这可能就是“答案”。自heartbleed以来,SSLv3是一个糟糕的默认值!
var page = require('webpage').create();

page.onResourceRequested = function (request) {
  console.log('Request ' + JSON.stringify(request, undefined, 4));
};

page.onResourceReceived = function(response) {
  console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
};

page.onResourceError = function(resourceError) {
  console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
  console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};

page.settings.userAgent = 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A406 Safari/8536.25';
page.open('https://tablet.euroslots.com/home/', function() {
  console.log(page.content);
  phantom.exit();
});
✓ 1347:0 /cherrytech/js-crawler root› phantomjs crawler.js
Request {
    "headers": [
        {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A406 Safari/8536.25"
        },
        {
            "name": "Accept",
            "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        }
    ],
    "id": 1,
    "method": "GET",
    "time": "2014-09-16T16:02:24.426Z",
    "url": "https://tablet.euroslots.com/home/"
}
Unable to load resource (#1URL:https://tablet.euroslots.com/home/)
Error code: 2. Description: Connection closed
Response (#1, stage "end"): {"contentType":null,"headers":[],"id":1,"redirectURL":null,"stage":"end","status":null,"statusText":null,"time":"2014-09-16T16:02:24.763Z","url":"https://tablet.euroslots.com/home/"}
<html><head></head><body></body></html>