Используйте прокси или Tor в приложении Heroku rails, чтобы скрыть IP

Я использую Mechanize внутри задачи rake, которая запускается надстройкой планировщика к моему ruby-приложению на Heroku. В сценарии я захожу на веб-страницу, которая работала до недавнего времени, когда сценарий больше не мог войти в систему. Когда я начал отладку, Mechanize показывает разные поля формы, когда я запускаю скрипт в консоли heroku, чем на моей локальной консоли.

Локальная консоль ruby показывает следующие поля:

>> asf.fields.each do |f| puts f.name end
__VIEWSTATE
__PREVIOUSPAGE
__EVENTVALIDATION
login$field
password$field

Консоль Heroku показывает одно дополнительное поле, которое НЕ отображается в исходном коде html:

>> asf.fields.each do |f| puts f.name end
__VIEWSTATE 
__PREVIOUSPAGE
__EVENTVALIDATION
login$field
password$field
captcha$txtCaptcha

Когда я выдаю:

>> asf.click_button

Обновление: я безуспешно пытался изменить пользовательский агент на несколько разных псевдонимов браузера. Похоже, что IP-адрес от Heroku вызывает ввод капчи. Можно ли сделать запрос через прокси-сервер или использовать Tor, чтобы скрыть IP-адрес?


person samfu_1    schedule 21.05.2012    source источник
comment
Они могут обслуживать капчу только для клиентов, подключающихся с вашего IP-адреса или диапазона IP-адресов Heroku (возможно, из-за вашей задачи rake). Вы можете убедиться в этом, проверив вывод curl. Кроме того, возможно, убедитесь, что ваш локальный Mechanize имеет ту же версию, что и на Heroku, или поэкспериментируйте с изменением строки пользовательского агента.   -  person Unixmonkey    schedule 21.05.2012
comment
локальный user_agent = Mechanize/2.1 Ruby/1.8.7p249 heroku user_agent =Mechanize/2.1 Ruby/1.9.2p180. Повлияют ли на это разные версии ruby?   -  person samfu_1    schedule 21.05.2012
comment
попробуйте загрузить куки с вашего локального компьютера в механизировать и изменить user_agent на нормальный   -  person Yuri Barbashov    schedule 21.05.2012
comment
Я пробовал несколько псевдонимов user_agent, но это ни на что не влияет. Что вы имеете в виду изменить user_agent на «нормальный»?   -  person samfu_1    schedule 22.05.2012
comment
звучит как проблема IP для меня   -  person overlox    schedule 25.05.2012
comment
какой сайт вы пытаетесь взломать, для которого требуется пароль?   -  person MatthewFord    schedule 29.05.2012
comment
@MatthewFord: не могу ответить на этот вопрос. Это сайт, на который я регулярно захожу по работе. Мне нужно автоматизировать вход в систему, чтобы уменьшить повторяющиеся задачи, необходимые для проверки соответствующих изменений, о которых мне нужно знать.   -  person samfu_1    schedule 29.05.2012
comment
:) тогда придется тебе доверять. Но да, настроить кучу tor-прокси нетривиально   -  person MatthewFord    schedule 29.05.2012
comment
работал до недавнего времени, когда скрипт больше не мог войти в систему - похоже, что сетевой администратор на вас;). Если это так и IP-адрес Heroku вызывает защиту от ботов (captcha), то выходной узел Tor почти наверняка будет иметь тот же эффект. Предложите прокси-сервер лучше, или, если это для вашей работы, вы можете попросить их внести ваш IP-адрес в белый список.   -  person MatzFan    schedule 02.09.2016


Ответы (1)


Ответ на ваш вопрос - да, вы можете использовать прокси через Tor. Я делал это в прошлом, проблемы, с которыми вы столкнетесь:

  1. Вам придется запустить tor в другом месте, если вы работаете на героку

  2. Tor довольно медленный для парсинга

  3. Вам нужно настроить прокси, который может общаться с tor (privoxy).

  4. Для любого серьезного парсинга вам понадобится несколько запущенных торов.

  5. Через некоторое время даже ваши tor ips будут заблокированы.

Заставляет задуматься, стоит ли заморачиваться. Вы можете заплатить за прокси-сервисы с маскировкой IP-адресов, что может быть более простым способом.

Думаю, ссылка помогла мне, когда я изучал это: http://www.howtoforge.com/ultimate-security-proxy-with-tor

person MatthewFord    schedule 28.05.2012
comment
@samfu_1, если это помогло, буду признателен, если вы переведете награду - до истечения срока ее действия;) - person MatthewFord; 29.05.2012