[PYTHON] Brisez Google "reCAPTCHA"! Défiez l'automatisation complète du fonctionnement du navigateur avec "2Captcha"

table des matières

introduction

Je pense que la plus grande difficulté dans la tâche d'automatisation des opérations de scraping et du navigateur est de percer diverses captures. En premier lieu, la fonction de capture est installée car elle n'est pas actionnée par le robot, donc je me demande ce qui se passe lorsque j'essaie de la percer, mais il y a encore des moments où je veux faire quelque chose. Il existe un service appelé "** 2 Captcha **" comme solution dans un tel cas.

J'ai récemment découvert ce service et j'ai essayé de l'utiliser, et il était si facile de briser la capture, je vais donc le présenter ici.

Qu'est-ce que 2 Captcha?

スクリーンショット 2020-11-06 17.00.05.png

Il s'agit d'un service pour percer la fonction de capture fournie par une entreprise russe. 2 L'API de Captcha peut être utilisée pour automatiser le processus de capture. Bien qu'il s'agisse d'un service payant, le coût d'une demande d'API est d'environ 0,3 yen, donc je pense qu'il est suffisamment bon marché.

Comment ça fonctionne

Avec un service appelé 2Captcha, vous pouvez surmonter la difficile fonction de capture avec des tactiques navales humaines écrasantes. Lorsque l'utilisateur envoie les informations de la capture qu'il souhaite annuler à l'aide de l'API de 2Captcha, un grand nombre de workers quelque part annulent la capture et renvoient les informations nécessaires.

スクリーンショット

Support linguistique

2Captcha fournit des bibliothèques dans plusieurs langages de programmation afin d'utiliser l'API plus facilement.

2 Préparation à l'utilisation du Captcha

Enregistrement du Compte

Allez sur https://2captcha.com/ Enregistrez votre compte à partir du bouton «Inscription» en haut à droite. スクリーンショット 2020-11-06 13.43.33.png

Définissez votre adresse e-mail et votre mot de passe et l'enregistrement est terminé. スクリーンショット

Lorsque vous vous connectez, vous verrez la page suivante. スクリーンショット

Paiement

Malheureusement, 2Captcha n'est pas disponible gratuitement. Une fois connecté, effectuez un dépôt depuis «Ajouter des fonds» en haut de l'écran.

Sélectionnez un service de paiement disponible et définissez le montant. J'ai payé avec PayPal. Pour le moment, déposons le dépôt minimum de 3 $. スクリーンショット

Lorsque le paiement est terminé, l'affichage de l'écran d'origine devrait passer à 3 $. (Il semble que cela puisse prendre un certain temps en fonction du mode de paiement.)

Obtenir la clé API

Une fois connecté, la clé API s'affiche au centre de l'écran. 2 Faites une copie car cela est nécessaire pour utiliser Captcha.

スクリーンショット 2020-11-06 16.04.10.png

Percer "reCAPTCHAv2" avec Python + Selenium + 2 Captcha

Découvrons reCAPTCHA v2 en utilisant Python.

Installation du package

Un package pour Python est disponible, alors installez-le d'abord.

pip install 2captcha-python

De plus, le test suivant traite le chrome sans tête avec sélénium. Pour la préparation de Selnium, veuillez vous référer à cet article.

Testé sur la page de démonstration reCAPTCHA

Cette fois, je voudrais tester 2Captcha en utilisant cette page de démonstration. https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php

import traceback

import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from twocaptcha import TwoCaptcha

solver = TwoCaptcha('YOUR_API_KEY')  #Veuillez définir votre propre clé API
url = 'https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php'


def main():
    #Lancer le navigateur
    options = Options()
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)

    try:
        #Accès à la page
        driver.get(url)

        # data-Obtenez la valeur de l'attribut sitekey
        data_sitekey = driver.find_element_by_css_selector('[data-sitekey]').get_attribute('data-sitekey')

        #2 Obtenez le code de déverrouillage avec Captcha
        response = solver.recaptcha(sitekey=data_sitekey, url=url)
        code = response['code']

        #Entrez le code de déverrouillage dans la zone de texte spécifiée
        textarea = driver.find_element_by_id('g-recaptcha-response')
        driver.execute_script(f'arguments[0].value = "{code}";', textarea)

        #Clic de bouton
        driver.find_element_by_css_selector('button[type="submit"]').click()

        #Affichage des résultats(Succès:"Success!",Échec:"Something went wrong")
        result = driver.find_element_by_css_selector('body>main>h2:nth-child(3)').text
        print(result)

    except BaseException:
        print(traceback.format_exc())
    driver.quit()


if __name__ == '__main__':
    main()

Résultat de l'exécution: "Succès!"

La réponse de 2Captcha a pris environ 5 à 20 secondes, mais elle a certainement traversé reCAPTCHA.

enfin

Qu'as-tu pensé. Cette fois, j'ai essayé de percer le reCAPTCHA v2 de Google, mais il semble qu'il prenne également en charge reCAPTCHA v3 et des fonctions de capture autres que Google. Le goulot d'étranglement est que cela coûte un peu d'argent, mais il semble utile de l'avoir en option lorsque cela est absolument nécessaire.

référence

Recommended Posts

Brisez Google "reCAPTCHA"! Défiez l'automatisation complète du fonctionnement du navigateur avec "2Captcha"