【问题标题】:CasperJS: Configure proxy options inside codeCasperJS:在代码中配置代理选项
【发布时间】: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 选项。
  • 谢谢!你知道我如何访问它们吗?

标签: javascript phantomjs bots casperjs


【解决方案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'
             }
    });
    

    【讨论】:

    【解决方案3】:

    我需要 CasperJS 在节点环境中运行。所以I have set up Spooky,好消息是您可以在代码中设置一个,如下所示:

    var spooky = new Spooky({
            child: {
                proxy: '192.128.101.42:9001',
                /* ... */
            },
            /* ... */
        },
    

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多