无法使用 PhantomJS 加载页面资源

2024-01-19

我正在使用 PhantomJS 获取给定 URL 的页面内容。 问题是在某些页面上 PhantomJS 无法加载某些资源(js、css...),我收到的错误是:

错误代码 5,操作取消

我可以重现此问题的网页是www.lifehacker.com http://www.lifehacker.com我无法获取的资源是:

  • http://x.kinja-static.com/assets/stylesheets/tiger-4ee27d6612a71ee3c68440f8e9c0025c.css http://x.kinja-static.com/assets/stylesheets/tiger-4ee27d6612a71ee3c68440f8e9c0025c.css
  • http://c.amazon-adsystem.com/aax2/amzn_ads.js http://c.amazon-adsystem.com/aax2/amzn_ads.js
  • 还有其他一些...

我正在运行的命令是:

phantomjs --debug=true --cookies-file=cookies.txt --ignore-ssl-errors=true --ssl-protocol=tlsv1 fetchpage.js http://www.lifehacker.com

即使我删除 cookies-file、ignore-ssl-errors、ssl-protocol 等选项,结果仍然是一样的。

fetchpage.js 脚本是:

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

if (system.args.length === 1) {
  console.log('Usage: fetchpage.js <some URL>');
  phantom.exit(1);
}

var url = system.args[1];

page.open(url, function (status) {

  console.log("STATUS: " + status);

  if (status !== 'success') {
    console.log(
      "Error opening url \"" + page.reason_url
      + "\": " + page.reason
      + "\": " + page
    );
    phantom.exit(1);
  } else {
    var content = page.content;
    console.log(content);
    phantom.exit(1);
  }
});

如果我在 Chrome 中打开同一页面,页面加载得很好。另外,如果我复制 phantomjs 无法加载的资源 URL 并将其粘贴到 Chrome 中,它们加载得很好。

我曾尝试用谷歌搜索类似的问题,但我只找到了一些关于设置超时的建议,这对我来说不起作用。

我在 phantomjs v1.9.0、1.9.8 和 2.0.1-development 上尝试过同样的事情。

更有趣的是,有时 phantomjs 脚本设法从所有资源获得完整响应,所以我怀疑缓存,但我无法强制服务器避免缓存。我尝试通过 phantomjs 发送自定义标头,如下所示:

...
var page = webPage.create();
page.customHeaders = {
    "Cache-Control":"no-cache",
    "Pragma":"no-cache"
};
page.open(url, function (status) {
  ...

但一切都没有改变。

我已经没有主意了..


对于在寻求 phantomjs 上资源未完全加载的解决方案时遇到此页面的编码人员。我有一个项目,脚本会在一些资源上停止/挂起。执行与否,比例是 50/50。

经过一番挖掘,我发现了以下页面:https://github.com/ariya/phantomjs/issues/10652 https://github.com/ariya/phantomjs/issues/10652

设置资源超时的解决方案对我来说很有效:

page.settings.resourceTimeout = 10000;

关于上述问题,我不确定这是否完全合适,但至少现在更容易找到信息,并且可以被视为某些解决方案的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 PhantomJS 加载页面资源 的相关文章

  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何将此 HTML 表格布局解决方案转换为浮动 div 解决方案?

    我经常需要列出各种尺寸的项目images在左边和text在右边 像这样 替代文本 http www deviantsart com upload 7s01l5 png http www deviantsart com upload 7s01
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何更改 Bootstrap 3 div 列顺序

    正在做我的第一个响应式设计 在 Bootstrap 3 中可能会出现类似的情况 在 lg 上更改此设置 a b c sm 上的这个 a c b 您可以使用两个 div 一个用于第一类型的布置 另一个用于第二类型的布置 第一个仅在 lg 中显
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 扩展(十进制,例如 400.1、401.4 等)HTTP 状态代码从何而来?

    我越来越多地看到十进制样式 HTTP 状态代码的激增 而且我似乎找不到任何 RFC 或其他 IETF 建议 甚至 W3C 草案或除 Microsoft IIS 文档之外的其他内容 请参阅https support microsoft com
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 三级十进制有序列表 CSS

    我有一个 html 中的三级有序列表 我想为其提供如下样式 1 Item 1 1 1 Item 2 1 1 1 Item 3 下一个 plunker 中有一个 html 示例 http plnkr co edit DqhZ5pJILTUHG
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 如何在一定数量的请求后停止 scrapy 蜘蛛?

    我正在开发一个简单的抓取工具来获取 9 个搞笑帖子及其图像 但由于一些技术困难 我无法停止刮刀 它会继续刮这是我不想要的 我想增加计数器值并在 100 个帖子后停止 但是 9gag 页面的设计方式是在每次响应中只提供 10 个帖子 每次迭代
  • Vulkan 验证层无法在 Linux 上加载/工作

    我有基本的 Vulkan 应用程序 Hello Triangle 源自本教程 https vulkan tutorial com 在调试模式下 我使用两个验证层 VK LAYER KHRONOS validation and VK LAYE
  • 将 Jar 文件添加到 WEB-INF/lib [重复]

    这个问题在这里已经有答案了 我是 Eclipse Java 和 Linux 的新手 我搜索这个问题 但没有找到答案 我想编写一个操作 HBase 表的程序 所以我有一些与 HBase 相关的 Jar 文件 在普通的 Java 应用程序中 我
  • PHP 和 MySQL 与 Highchart

    有人可以帮助我 我是 php 和 highcharts 的新手 我尝试使用 mysql 和 php 填充我的图表 但是当我尝试运行它时 图表没有出现 我只看到一个空白网页 并且没有出现错误 她是我的代码 抱歉代码混乱
  • 作业完成完整执行后调用函数

    我们正在使用 Quartz Net 在 Windows 服务中按计划触发作业 我有一种情况 我必须每次触发一个工作5 minutes from Start DateTime till End DateTime 工作完成后我们需要计算Next
  • 函数gapi.client.load('oauth2', 'v2', function());不管用

    我已经使用网站中的 javascript sdk 使用 google plus 登录 两天前它就可以工作了 但现在它不起作用 因为 gapi client load oauth2 v2 function 未加载 即不工作 请帮忙 下面是我的
  • Perl 脚本内的 XML 编辑

    我正在尝试使用 perl pi e 编辑 xml 文件中的一行 如果我从命令行运行 perl pi e 命令 它工作正常 但是一旦我放入脚本并使用系统命令 我就会收到下面列出的错误 su 无效选项 i 尝试 su help 以获取更多信息
  • MySQL性能,内连接,如何避免使用临时和文件排序

    我有表1和表2 表格1 零件号 ID BRAND partnum 是主键 id brand 已 编入索引 表2 ID BRAND BRAND NAME id brand 是主键 Brand name 已 编入索引 表 1 包含 100 万条
  • Visual Studio 2015:更新 3 失败后出现多个包加载错误:Windows 10

    更新 我修好了 请参阅下面的答案 Visual Studio 2015 更新 3 失败后出现多个包加载错误 Windows 10 https stackoverflow com questions 38717145 visual studi
  • 如何隐藏配置文件以防止直接访问?

    我正在使用 Laravel 作为网络应用程序 上传了生产环境中的所有内容 发现有些文件可以通过 url 直接访问 例如http example com composer json http example com composer json
  • “pip install jq”在 Mac 和 Windows 上生成错误

    重复此issue https stackoverflow com questions 39785890 unable to install jq via pip 但第一个答案是错误的 jqWindows 上支持 第二个指的是brew所以我猜
  • 将 int 数组发布到 MVC 控制器 - 正确的方法签名是什么?

    下面是我发送到 ASP NET MVC2 控制器的 POST 请求的屏幕截图 使用 Firebug Net 面板 这是接收 POST 请求的控制器 操作方法 public ActionResult Search int skill int
  • 从 numba jitted 函数调用非 jitted 函数

    我的代码如下所示 jit nopython True def sum fn arg1 arg2 argn for i in xrange len arg2 For each bin l p fn1 arg1 arg2 argn res re
  • 如何动态地将项目添加到纸张下拉菜单中?

    我尝试使用 dropdownMenu appendChild menuItem 添加它 但正如我预期的那样 这不起作用 我在 Polymer 指南上找不到有关此问题的信息 也在这里找不到其他类似的问题 那可能吗 如果是这样 怎么办 纸张下拉
  • 人们如何处理 RESTful api 的身份验证(与技术无关)

    我正在考虑构建一些移动应用程序 因此 这些应用程序将通过 JSON 和 REST 例如 put post 等 与我的服务器 对话 如果我想确保客户端手机应用程序正在尝试执行需要某些 许可 的操作 人们该如何处理 例如 我们的网站出售东西 g
  • 如何在运行时通过脚本检查 PowerShell 中是否存在 cmdlet

    我有一个需要在多个主机 PowerGUI PowerShell ISE https technet microsoft com en us library dd315244 aspx等 但我遇到一个问题 有时其中一台主机下不存在 cmdle
  • 在 Maven 中,为什么运行“mvn clean”?

    我想知道跑步之间的主要区别是什么mvn compile and mvn clean compile是 在实践中 我明白真正的区别是什么mvn clean compile删除所有生成的文件并从头开始 但我们为什么要这样做呢 我可以假设mvn
  • WSDL.exe - 生成接口以及具体类,以便以后轻松进行伪造/模拟

    当 WSDL exe 生成 Web 服务的代理时 是否可以让 WSDL exe 生成接口以及具体类 或者代替具体类 我们正在使用来自 ASP Net 应用程序的第 3 方 Web 服务 并使用 WSDL exe 生成了我们的代理类 一切都很
  • 核心数据多级父-子上下文

    在我的应用程序中我有UITableViewController显示事件列表 该控制器使用 ManagedObjectContext 说ParentContext 现在 如果选择任何事件 则会显示详细的视图控制器 用户可以在其中编辑事件的详细
  • 无法使用 PhantomJS 加载页面资源

    我正在使用 PhantomJS 获取给定 URL 的页面内容 问题是在某些页面上 PhantomJS 无法加载某些资源 js css 我收到的错误是 错误代码 5 操作取消 我可以重现此问题的网页是www lifehacker com ht