Я согласен с @Grisk при использовании NodeJS/ioJS в качестве платформы. Это мощный инструмент, разработанный с нуля для ввода-вывода, что делает его идеальным для решения вашей проблемы. Кроме того, сообщество узлов необычайно динамично, с npm, менеджером пакетов nodejs, размещающим тысячи легко доступных модулей. Чтобы избежать какой-либо будущей путаницы: не допускайте ошибки NodeJS для языка или базовой системы; это собственный интерпретатор javascript, построенный на двигателе Google V8, а также набор встроенных модулей для создания мощных приложений ввода-вывода. Читайте об узле онлайн.
Что касается конкретной проблемы, я бы сказал, что у вас есть два варианта:
- симулировать быть браузером с помощью фантомного печенья
- По программным навигации через веб-сайт, как вы делали.
Что касается прежнего варианта, вам необходимо вручную определить, какие файлы cookie отправляются на сервер при отправке форм на каждую страницу, а затем в вашем скрипте генерируют эти куки и включают их в http-запрос. Обратитесь к nodejs http documentation за дополнительной информацией по настройке заголовков запросов.
Ты заголовок должен будет выглядеть примерно так:
var headers = {
'host': < website host address here > ,
'origin' : <website origin here>
'referer' : <website origin here>
'User-Agent': 'Opera/9.52 (X11; Linux i686; U; en)',
'Cookie': <cookie sent over by server here>
}
Недавно я наткнулся на node-icloud
библиотеки, которая использует первый метод, я описываю выше, чтобы обеспечить программный доступ к своей учетной записи ICloud. Я настоятельно рекомендую прочитать его код, чтобы узнать, как он работает here.
Кроме того, я хотел бы предложить чтение до около HTTP заголовков here
Для второго варианта, проверьте phantomjs и zombiejs. Фантом хорош, потому что он работает без браузера. Я не уверен, насколько скорость этих двух библиотек сравнима с тем, что вы уже делали, но их стоит проверить.
Последняя вещь: я бы рекомендовал создать пользовательский (JSON) DSL для автоматизации взаимодействия с веб-страницами, чтобы вы могли очень легко переработать рабочие процессы взаимодействия с браузером.
Кроме того, если вы решите использовать nodejs, понимание потоков узлов и деталей, стоящих за его циклом событий, было бы полезно.
Удачи!
Отъезд http://phantomjs.org/ и http://zombie.js.org. Кроме того, я только что начал проект по решению этой и подобных проблем. Он не будет использоваться в течение как минимум нескольких недель, но вы можете следить за ним здесь: http://git.io/vOrAA – theideasmith
любой клиент http-клиента. – ZhongYu
@ bayou.io Это зависит от того, хотите ли вы фактически автоматизировать браузер или притвориться браузером. – theideasmith