CasperJS:在代码中配置代理选项

时间:2014-01-31 08:15:32

标签: javascript phantomjs bots casperjs

我想知道我们如何在代码中设置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>

3 个答案:

答案 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',
            /* ... */
        },
        /* ... */
    },