English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

python+Exemple de code pour reconnaître le captcha et se connecter avec Selenium

En raison des besoins du travail, il est nécessaire d'utiliser un captcha pour se connecter au site Web. J'ai étudié la reconnaissance de captcha à l'origine, mais je n'ai jamais pu obtenir le captcha dont j'avais besoin. Jusqu'à ce vendredi, je me suis souvenu de cette affaire, et j'ai résolu le problème hier.

Voici le sujet principal :

version python :3.4.3

Les bibliothèques nécessaires : PIL, selenium, tesseract

Voici le code :

#coding:utf-8
import subprocess
from PIL import Image
from PIL import ImageOps
from selenium import webdriver
import time, os, sys
def cleanImage(imagePath):
  image = Image.open(imagePath)  #Ouvrir l'image
  image = image.point(lambda x: 0 if x<143 else 255) #Traiter chaque pixel de l'image pour que chaque point de l'image soit "noir ou blanc"
  borderImage = ImageOps.expand(image, border=20, fill='white')
  borderImage.save(imagePath)
def getAuthCode(driver, url="http://localhost/"):
  captchaUrl = url + "common/random"
  driver.get(captchaUrl) 
  time.sleep(0.5")
  driver.save_screenshot("captcha.jpg")  #Capture l'écran et sauvegardez l'image
  #urlretrieve(captchaUrl, "captcha.jpg")
  time.sleep(0.5")
  cleanImage("captcha.jpg")
  p = subprocess.Popen(["tesseract", "captcha.jpg", "captcha"], stdout=\
             subprocess.PIPE, stderr=subprocess.PIPE)
  p.wait()
  f = open("captcha.txt", "r")
  #Nettoyer tous les caractères d'espace
  captchaResponse = f.read().replace(" ", "").replace("\n", "")
  print("Captcha solution attempt: " + captchaResponse
  if len(captchaResponse) == 4:
    return captchaResponse
  else:
    return False
def withoutCookieLogin(url="http://org.cfu666.com/"):
  driver = webdriver.Chrome()
  driver.maximize_window()
  driver.get(url)
  while True:   
    authCode = getAuthCode(driver, url)
    if authCode:
      driver.back()
      driver.find_element_by_xpath("//input[@id='orgCode' and @name='orgCode']
      driver.find_element_by_xpath("//input[@id='orgCode' and @name='orgCode']
      driver.find_element_by_xpath("//input[@id='account' and @name='username']
      driver.find_element_by_xpath("//input[@id='account' and @name='username']
      driver.find_element_by_xpath("//input[@type='password' and @name='password']
      driver.find_element_by_xpath("//input[@type='password' and @name='password']       
      driver.find_element_by_xpath("//input[@type='text' and @name='authCode']
      driver.find_element_by_xpath("//button[@type='submit']
      try:
        time.sleep(3")
        driver.find_element_by_xpath("//*[@id='side-menu']/li[2]/ul/li/a.click()
        return driver
      except:
        print("authCode Error:", authCode)
        driver.refresh()
  return driver
driver = withoutCookieLogin("http://localhost/)
driver.get("http://localhost/enterprise/add/)

Comment obtenir le captcha dont nous avons besoin

Sur ce chemin de récupération de captcha, j'ai tombé dans trop de trous, lu trop d'articles, beaucoup d'entre eux vous enseignent des méthodes de reconnaissance de captcha, mais ne décrivent pas comment obtenir l'image de captcha nécessaire à ce moment-là.

Mon méthode de traitement est :

1.Utilisez selenium pour ouvrir l'URL de la page de connexion dont vous avez besoin1

2.Obtenez l'URL de l'élément de vérification de captcha2(En fait, le plus simple est d'ouvrir une nouvelle page avec le clic droit)

3: Dans l'URL1page, entrez l'URL2Entrez l'URL2page, puis capturez l'écran de la page de captcha

4: Traitez le captcha pour obtenir la chaîne de captcha. Ensuite, cliquez sur le bouton retour du navigateur pour revenir à l'URL1Page de connexion

5: Entrez les informations nécessaires à la connexion et le captcha

6: Cliquez sur se connecter

7: Vérifiez la page de connexion après la connexion, pour déterminer si la connexion est réussie. Si ce n'est pas le cas, vous devez la reconnecter1-7opérations.

Pour protéger les informations de l'entreprise, cette page est un service que j'ai configuré localement. J'ai testé la méthode d'obtention de ce captcha sur la page d'enregistrement de Baile Online, et elle fonctionne. (La méthode de traitement du captcha ne s'applique qu'aux captcha avec un fond de points de pixels. Si le captcha contient des lignes, un traitement supplémentaire est nécessaire.)

Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous continuerez à soutenir le tutoriel d'alerte.

Déclaration : Le contenu de cet article est hébergé sur Internet, la propriété intellectuelle appartient aux auteurs respectifs, le contenu est自发贡献 par les utilisateurs d'Internet et téléchargé par eux-mêmes. Le site Web ne possède pas de propriété intellectuelle, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à notice#w3Pour signaler une violation, veuillez envoyer un e-mail à codebox.com (remplacez # par @) et fournir des preuves pertinentes. Une fois vérifié, le site supprimera immédiatement le contenu suspect de violation de droits d'auteur.

Vous pourriez aussi aimer