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