CasperJS:在代码中配置代理选项
Posted
技术标签:
【中文标题】CasperJS:在代码中配置代理选项【英文标题】:CasperJS: Configure proxy options inside code 【发布时间】:2014-02-23 20:45:00 【问题描述】:我想知道如何在代码中设置 cli 参数,而不是像这样将它们放在命令的末尾:
casperjs casper_tor.js --proxy=127.0.0.1:9050 --proxy-type=socks5
我已经测试过类似的东西,但没有用:
var casper=require('casper').create();
casper.cli.options["proxy"] = "127.0.0.1:9050";
casper.cli.options["proxy-type"] = "socks5";
...
casper.run();
我想要实现的是在我的代码中设置新的代理,并从 whatsmyip.com 删除我的新 IP 地址以检查一切是否正确(我正在编写会经常更改其代理的机器人)。
【问题讨论】:
你可以在 create 中添加一个配置数组,但是 proxy 和 proxy-type 是 phantomjs 选项。 谢谢!你知道我如何访问它们吗? 【参考方案1】:这不是对您问题的严格回答,而是更笼统的回答:
如何使用特定的 CLI 选项编写将由 CasperJS 运行的单个脚本?
没有使用单个脚本文件的干净解决方案,因为“shebang”行#!/bin/...
非常有限。事实上,在大多数操作系统上,它只支持解释器名称后的单个参数。
“正确”的解决方案当然是使用多个脚本,通常是一个 bash 脚本,它将使用正确的选项执行您的 CasperJS 脚本。
但是...
有一个非常古老的技巧解决了这个问题,多语言脚本。它涉及滥用语言功能来编写一个文件,该文件是一个有效的脚本,分为两部分(或更多)口译员,做两件不同的事情。
在这种情况下,由于 shebang 行,脚本将首先由 Bash 读取。该脚本将指示 Bash 使用脚本本身的特定选项执行 CasperJS,然后终止。 CasperJS 将跳过针对 Bash 的行并运行脚本的其余部分。
JavaScript 版本
#!/bin/sh
//bin/true; exec casperjs --proxy=127.0.0.1:8003 test "$0" "$@"
(rest of javascript file)
这里的诀窍是//
在 Javascript 中开始注释,而在 Bash 中它只是第一行代码的一部分。
CoffeeScript 版本
#!/bin/sh
""""exec casperjs --proxy=127.0.0.1:8003 test "$0" "$@" #"""
(rest of CoffeeScript file)
这里的技巧是""""
被 Bash 跳过了,因为它只是两个空字符串,而在 CoffeeScript 中它打开了一个多行字符串,它会吞下第一行代码。
【讨论】:
【参考方案2】:这行得通
casper = require('casper').create(
pageSettings:
proxy: 'http://localhost:3128'
);
【讨论】:
CasperJS 官方文档没有显示proxy
。确定有效吗?
@3zzy 是的,它有效。见这里github.com/casperjs/casperjs/issues/1445#issuecomment-185603647。 Casperjs 支持几乎所有的 Phantomjs 选项。【参考方案3】:
我需要 CasperJS 在节点环境中运行。所以I have set up Spooky,好消息是您可以在代码中设置一个,如下所示:
var spooky = new Spooky(
child:
proxy: '192.128.101.42:9001',
/* ... */
,
/* ... */
,
【讨论】:
以上是关于CasperJS:在代码中配置代理选项的主要内容,如果未能解决你的问题,请参考以下文章
如果使用它,“use strict”会使我的 CasperJS 测试崩溃