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.
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é.
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.
2Captcha fournit des bibliothèques dans plusieurs langages de programmation afin d'utiliser l'API plus facilement.
Allez sur https://2captcha.com/
Enregistrez votre compte à partir du bouton «Inscription» en haut à droite.
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.
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.)
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.
Découvrons reCAPTCHA v2 en utilisant Python.
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.
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.
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.