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();

то, что я пытаюсь достичь, - это установить новые прокси внутри моего кода и удалить мой новый ip-адрес из whatsmyip.com чтобы проверить, что все правильно (я пишу ботов, которые будут часто менять свои прокси).

3 ответов


Это не совсем ответ на ваш вопрос, но:

как я могу написать один скрипт, который будет выполняться CasperJS с использованием определенных параметров CLI?

нет чистого решения с использованием одного файла сценария, потому что строка" shebang"#!/bin/... очень ограничен. Фактически, в большинстве ОС он поддерживает только один аргумент после имени интерпретатора.

"правильное" решение, конечно, использует более одного скрипт, обычно скрипт bash, который будет выполнять ваш скрипт CasperJS с соответствующими параметрами.

но...

есть очень старый фишка ужасный хак, который решает эту проблему,полиглот сценарий. это связано с неправильным использованием языковых функций для записи файла, который является допустимым скриптом в двух (или более) интерпретаторах, делая две разные вещи.

в этом случае скрипт сначала будет прочитан Bash, из-за линия shebang. Скрипт направит Bash на выполнение CasperJS с определенными параметрами на сам скрипт и потом прекратить. CasperJS пропустит строку, направленную на Bash, и запустит остальную часть сценария.

версия JavaScript

#!/bin/sh
//bin/true; exec casperjs --proxy=127.0.0.1:8003 test "" "$@"

(rest of JavaScript file)

фокус здесь в том, что // запускает комментарий в Javascript, в то время как в Bash это только часть первой строки кода.

в CoffeeScript версия

#!/bin/sh
""""exec casperjs --proxy=127.0.0.1:8003 test "" "$@" #"""

(rest of CoffeeScript file)

фокус здесь в том, что """" пропускается Bash, потому что это всего лишь две пустые строки, в то время как в CoffeeScript он открывает многострочную строку, которая поглощает первую строку кода.


это работает

casper = require('casper').create({
        pageSettings: {
            proxy: 'http://localhost:3128'
         }
});

Мне нужен CasperJS для запуска внутри среды узла. Так что Я настроил Spooky и хорошей новостью является то, что вы можете установить один внутри своего кода следующим образом:

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