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:在代码中配置代理选项的主要内容,如果未能解决你的问题,请参考以下文章

casperjs打开百度并截图

casperjs批量执行多个url

如何在CasperJS中完成评估步骤?

如果使用它,“use strict”会使我的 CasperJS 测试崩溃

windows10 phantomjs CasperJS安装和使用

casperjs模拟登录-驾校登录