скрипт сценария rubytcha - PullRequest
       6

скрипт сценария rubytcha

0 голосов
/ 18 ноября 2011

Я пишу приложение, в котором пользователю нужно решить изображение recaptcha вне браузера, в основном они увидят изображение со страницы, подобной этой http://www.google.com/recaptcha/api/noscript?k=6Lf5YAcAAAAAAILdm73fp007vvmaaDpFb6A5HLJP, представит решение, и программа сделает остальное.

Я использую Mechanize для автоматизации взаимодействия с этой страницей, и по какой-то причине она всегда дает мне код ответа 500. Я попытался установить useragent с механизировать безрезультатно. Я в недоумении от того, что мне следует делать, потому что я проверил (с помощью wireshark) пакеты, которые механизирует отправка / получение, и сравнил их с теми, когда я использую chrome для получения кода, и они выглядят почти тот же самый! (Это почтовое сообщение, и они имеют одинаковые параметры и т. Д. И отправляют в одно и то же место)

Я почти уверен, что это что-то очевидное, но я боролся с этим часами и был бы признателен за помощь.

РЕДАКТИРОВАТЬ для кода

  agent = Mechanize.new do |i|
    i.user_agent_alias = 'Mac Safari'
    i.log = Logger.new 'captcha.log'
  end
  agent.get(captcha_url) do |google_page| # captcha_url is a url like the one above
      form = google_page.forms.first
      form.recaptcha_response_field = captcha_text # captcha_text is user-input
      form.
      form.submit # this line is where the error is
  end

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Почти так же? Попробуйте отправить точно такие же заголовки.

agent = Mechanize.new

headers = {
    "Content-Type" => "application/x-www-form-urlencoded",
    "User-Agent" => "MyAgent",
    "Referer" => "Bob"
}

agent.post(url, {:foo => 'bar'}, headers)

Если это не сработает, взгляните на куки.

0 голосов
/ 19 ноября 2011

Ну, я решил проблему.Видимо, Mechanize отправлял неверный «Content-length» в заголовке.Выполнение запроса вручную (с постом из net / http) заставляет его работать.

0 голосов
/ 18 ноября 2011

Они могут выполнять какое-то распознавание браузера помимо проверки пользовательского агента, например, проверять порядок данных в заголовке. Но это только предположение. Пример кода поможет.

...