http - Phantomjs 无法打开某些 URL

标签 http phantomjs network-security

我正在使用以下代码使用 phantomjs 截取页面的屏幕截图。它适用于大多数页面,但对某些 URL 显示“操作已取消”错误。

var page = require('webpage').create(),
system = require('system');

page.viewportSize = {
  width: 1366,
  height: 800
};

page.onConsoleMessage = function(msg) {
  console.log("CONSOLE MESSAGE:" + msg);
};

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.open(<URL>, function(status) {
  if (status !== 'success') {
    console.log('FAIL to load the address');
    phantom.exit();
  } else {
    page.render("3.png");

    phantom.exit();
  }
});
console.log("opening");

一些无法使用的 URL 示例是:http://india.gov.inhttp://timesofindia.indiatimes.com/

对于 india.gov.in,第一个请求到 url:http://india.gov.in/正在中途重新发送,并且所有现有操作都在它之前被取消。其他一些 URL 也会发生类似的情况。

页面是否正在刷新?如果是,我该如何处理?

如何在 phantomjs 中遵循重定向/重新加载?

进一步的调查给了我一些更有趣的统计数据。在 india.gov.in 期间,phantomjs 开始一次发送请求和接收响应(发出请求 ID:118 后),待处理请求的数量为 37。 Phantom“取消”了待处理的请求并从头开​​始加载页面。它再次开始发送请求。

在请求 ID 156 之后,待处理请求的数量再次变为 37(这次它只收到一个请求的响应)。因此它再次“取消”了所有待处理的请求。

在请求 ID 194 之后,待处理请求的数量再次为 37,因此它再次取消并重新启动。

在请求 ID 232 之后,待处理请求的数量再次为 37 但这次它没有重新启动和取消。

phantom 可以处理的待处理请求的数量是否有限制?

谢谢!!

注意!笔记!注意!: 它开箱即用,可与 phantomjs 2 一起使用。但由于它仍在开发中,因此无法在我的生产设置中使用。有谁知道 1.9.8 和 2.0 之间的哪个更新修复了它?我可能可以在 1.9.8 的源代码中导入该更改并构建它。

最佳答案

引用这个问题。

https://github.com/ariya/phantomjs/issues/10522

这是因为缺少对 bind() 的可靠支持。 phantomjs 1.9.7 曾尝试解决这个问题,但直到 2.0 版才完全解决。

修复在主分支中工作。你唯一的解决方案似乎是自己编译预发布 2.0 并在发布时升级到官方 2.0。

关于http - Phantomjs 无法打开某些 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830906/

相关文章:

java - 来自网络浏览器的跨域调用

javascript - 消除: ISP Injects Pages with Iframe Script for Ads

java - 如何在 Java 客户端中启用 GOST 密码

http - 网址中的空格?

java - 如何在post请求中设置身份验证?

ruby-on-rails-3 - Rails 3,从 https 重定向到 https,覆盖 _path 助手

angularjs - Angular 无法加载仅用于生产的 prerender.js/phantomjs 模块

javascript - AWS Lambda 上的权限问题,无法生成子进程

python - scrapy可以完成表单提交并做浏览器能做的一切吗

javascript - 禁用文本框中的空格(键入空格键并从其他空格复制空格)