我想知道我们如何在代码中设置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地址以检查一切是否正确(我正在编写经常更改其代理的机器人)。 / p>
答案 0 :(得分:5)
这不是对你的问题的严格答案,而是对更一般的答案:
如何使用特定的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中它打开了一个吞下第一行代码的多行字符串。
答案 1 :(得分:4)
这是有效的
casper = require('casper').create({
pageSettings: {
proxy: 'http://localhost:3128'
}
});
答案 2 :(得分:3)
我需要CasperJS在节点环境中运行。所以I have set up Spooky和好消息是你可以在你的代码中设置一个如下:
var spooky = new Spooky({
child: {
proxy: '192.128.101.42:9001',
/* ... */
},
/* ... */
},