#php #curl #recaptcha
Есть 2 сайта с формами поиска информации, мой и чужой, на чужом стоит recaptcha в форме поиска (аякс запрос на скрипт). Требуется с чужого спарсить информацию, пользуясь формой поиска моего сайта. Мои действия. 1 вариант. Загружаю на своем сайте рекапчу с публичным ключом для своего домена и отправляю разгаданный ключ g-recaptcha-response на чужой сайт. В ответ - ошибка 403. Вероятно несоответсвие моего публичного ключа и приватного того домена. 2 вариант. Пытаюсь загрузить у себя в песочнице рекапчу с публичным ключом чужого сайта - в ответ ошибка (на скриншоте). Вопрос - как мне спарсить инфо с такого сайта? Капчу не требуется взламывать, её будет разгадываать человек, это не проблема. Напоминаю, данное осуществимо, сервис Rucaptcha предоставляет услуги разгадывания капч, в том числе и гугловскую рекапчу http://rucaptcha.com/api-rucaptcha#solving_recaptchav2_new Дополнено 04.10.2017: Для пробы парсинга можете использовать форму с рекапчей на моем тестовом стенде http://dev.drupalworld.ru/recaptcha/ - имитация чужого сайта.
Ответы
Google не сможет проверить с того сайт разгадывается капча, или с другого. У упомянутой вами РуКапча используется самодельный браузер, в котором разрешена подмена window.location.href без перезагрузки страницы. Очевидно, это не вариант для обычных гостей сайта. Динамически этот ключ можно получить, но лучше будет кешировать его где-то чтобы не дёргать тот сайт каждый раз при открытии страницы. $contents = file_get_contents('http://dev.drupalworld.ru/recaptcha/'); preg_match('#data-sitekey="([-_A-Za-z0-9]+)"#', $contents, $match); $sitekey = $match[1]; Это было первое условие. Оно может быть выполнено если разработчик был ленив, и не стал получать ещё один ключ для локальной разработки, или не стал добавлять имя локального сервера к разрешенным в существующем ключе. Или не пользовался специальным ключом для разработчика. При создании ключа у вас в примере вы указали домен, значит такой трюк на вашем примере уже не получится провернуть. Второе условие: необходимо чтобы на целевом сайте использовалась самодельная функция для отправки результатов на сервер Google, которая не указывает IP разгадавшего капчу в параметре remoteip. Этот параметр пока ещё не является обязательным. Если такого параметра нет, то Google не сможет проверить что человек, разгадавший капчу, и человек, зашедший на сайт, тот же самый. Таким образом, если вам повезло по двум пунктам, то вы сможете разгадывать ту же самую капчу у вас на сайте. Если хотя бы по одному из пунктов вам не повезло, то пиши пропало. Простым скриптом такую капчу не обойти.Ответ 1
Это можно сделать простым скриптом при достаточном везении. Если при создании ключей автор сайта не указал домен, на котором капча должна работать, то скрипт рекаптчи будет работать на любом домене. Конкретно это поле нужно было оставить пустым: Если это было так, то вы сможете попросить разгадать ту же самую капчу у вас на сервере с тем же самым sitekey:
Комментариев нет:
Отправить комментарий