Как обойти Google captcha с помощью Selenium и Python?

Я хочу знать, как обойти Google captcha с помощью Selenium и Python. Когда я пытаюсь что-то выбросить, Google дает мне капчу, могу ли я обойти капчу Google с помощью Selenium Python?

Например, это Google reCAPTCHA, вы можете увидеть эту капчу по этой ссылке: https://www.google.com/recaptcha/api2/demo

8 ответов

Решение

Для того, чтобы начать с использованием Selenium "s Python клиентов вы должны избегать решение / перепускной Google капчу.


Селен

Selenium автоматизирует браузеры. То, чего вы хотите достичь с помощью этой мощности, полностью зависит от отдельных лиц, но в первую очередь это касается автоматизации веб-приложений с помощью клиентов браузера для целей тестирования, и, грубо говоря, это, конечно, не ограничивается этим.


Капча

С другой стороны, Captcha (аббревиатура ... полностью автоматизированный общедоступный тест Тьюринга, чтобы отличить компьютеры и людей друг от друга ...) - это тип теста "вызов-ответ", используемый в вычислениях, чтобы определить, является ли пользователь человеком.

Итак, Selenium и Captcha служат двум совершенно разным целям и в идеале не должны использоваться для решения каких-либо взаимосвязанных задач.

Сказав, что, Recaptcha может легко обнаружить сетевой трафик и определить программу как Selenium управляемой СЭП.


Общее решение

Однако есть несколько общих подходов, позволяющих избежать обнаружения при сканировании веб-страниц:

  • Первым и главным атрибутом, который веб-сайт может определить ваш сценарий / программу, является размер вашего монитора. Поэтому рекомендуется не использовать обычное окно просмотра.
  • Если вам нужно отправить несколько запросов на веб-сайт, продолжайте менять User Agent для каждого запроса. Здесь вы можете найти подробное обсуждение Как изменить пользовательский агент Google Chrome в Selenium?
  • Чтобы смоделировать человеческое поведение, вам может потребоваться замедлить выполнение скрипта даже за пределами WebDriverWait и expected_conditions, вызывающихtime.sleep(secs). Здесь вы можете найти подробное обсуждение того, как засыпать webdriver в python на миллисекунды.

Этот вариант использования

Однако в нескольких случаях использования мы смогли взаимодействовать с reCAPTCHA с помощью Selenium, и вы можете найти более подробную информацию в следующих обсуждениях:


Ссылки

Вы можете найти пару связанных обсуждений в:


tl; доктор

Чтобы обойти капчу при парсинге Google, вам нужно вручную решить капчу и экспортировать файлы cookie, которые предоставляет вам Google. Теперь каждый раз, когда вы открываете Selenium Webdriver, убедитесь, что вы добавили файлы cookie, которые вы экспортировали. Файл cookie GOOGLE_ABUSE_EXEMPTION - это тот файл, который вы ищете, но я бы сохранил все файлы cookie на всякий случай.

Если вам нужен дополнительный уровень стабильности в ваших сборах, вам следует экспортировать несколько файлов cookie и сделать так, чтобы ваш сценарий произвольно выбирал один из них каждый раз, когда вы пингуетесь с Google.

Эти файлы cookie имеют длительный срок годности, поэтому вам не нужно будет получать новые файлы cookie каждый день.

Чтобы получить помощь по сохранению и загрузке файлов cookie в Python и Selenium, ознакомьтесь с этим ответом: /questions/38188054/kak-sohranit-i-zagruzit-kuki-s-pomoschyu-python-selenium-webdriver/38188075#38188075

Надеюсь это поможет!

Очистите историю просмотров, кешированные данные, файлы cookie и другие данные сайта. Сначала создайте учетную запись Google, когда вы находитесь в окне браузера, открытом селеном. Войдите в свой аккаунт

      wd.get("https://accounts.google.com/signin/v2/identifier?hl=en&passive=true&continue=https%3A%2F%2Fwww.google.com%2F%3Fgws_rd%3Dssl&ec=GAZAmgQ&flowName=GlifWebSignIn&flowEntry=ServiceLogin");
    Thread.sleep(2000);
    wd.findElement(By.name("identifier")).sendKeys("Email"+Keys.ENTER);
    Thread.sleep(3000);
    wd.findElement(By.name("password")).sendKeys("Password"+Keys.ENTER);
    Thread.sleep(5000);

Затем откройте любой веб-сайт, который использует recaptcha, отметьте галочкой этот код.

      String framename=wd.findElement(By.tagName("iframe")).getAttribute("name");
            wd.switchTo().frame(framename);
    wd.findElement(By.xpath("//span[@id='recaptcha-anchor']")).click();

Вы не найдете головоломок или чего-то еще.

Обход, как решить или обойти, как никогда не получить?

Чтобы решить эту проблему:

  • зарегистрируйтесь с помощью 2captcha, capmonster cloud, deathbycaptcha и т. д. и следуйте их инструкциям. Они дадут вам жетон, который вы передадите вместе с формой.

Чтобы вообще этого не получить:

  • Убедитесь, что у вас хорошая IP-репутация (что наиболее важно для Cloudflare).
  • Убедитесь, что у вас есть хороший отпечаток пальца браузера (что наиболее важно для Distil) - я рекомендую puppeteer + плагин stealth.

Итак, вот простой скрипт на Python для решения капчи.

Он в основном читает аудио, а затем использует помощника Google, чтобы преобразовать его в текст и вставить.

Это работает только в аудио-капчах, которые чаще всего встречаются с imahe captcha V2.

https://www.google.com/url?sa=t&source=web&rct=j&url=https://github.com/ohyicong/recaptcha_v2_solver&ved=2ahUKEwjG_Z2g-8f1AhUCdBQKHdIiANwQFnoECAUQAQ&usg=AOvVaw3dkyBTmAmjHqLRZoTzxNG8

Отказ от ответственности!

Я не пишу сценарий, я просто придумал, как это сделать, но получил проект брата, поэтому решил помочь другим в этом.

Если у вас есть доступ к конфигурации, добавьте SiteKey: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhISecretKey: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

См.: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do .

Captcha предназначена для того, чтобы избежать этих автоматических ботов. Вы можете вручную ввести кодировку и продолжить работу. Нравится:

      import time
from time import sleep

time.sleep (60)
dus = input ('Did you solve the captcha? 1 for yes 2 for no :')

if dus == 1 :
      continue

else :
      time.sleep (60)
      tdus = input ('Did you solve the captcha? 1 for yes 2 for 
      no :')

      if tdus == 1 :
        continue
       
      else :
         exit

Простое решение - приостановить программу на 10 секунд или более, а затем, когда откроется автоматический браузер, решить reCAPTCHA самостоятельно, а затем программа запустится через 10 секунд и выполнит остальную часть программы, например, нажав кнопку отправки или другие вещи.

Другие вопросы по тегам