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

مثال على رمز التعرف على رمز التحقق وال登입 باستخدام selenium في python

بسبب الحاجة العملية،يتطلب تسجيل الدخول إلى الموقع استخدامه للرقم التحقق. في البداية،لقد قمت بالبحث في التعرف على الرقم التحقق،لكن لم أتمكن من الحصول على الرقم التحقق الذي أريده. حتى هذا الجمعة،تذكرت هذا الأمر،وتمكنت من حل المشكلة بالأمس.

النقطة الرئيسية التالية:

إصدار python: 3.4.3

المكتبات المطلوبة: PIL،selenium،tesseract

سأبدأ بالكود:

#كودينغ:UTF-8
استورد subprocess
من حزمة PIL استورد Image
من حزمة PIL استورد ImageOps
من selenium import webdriver
من time,os,sys
تعريف تنظيف الصورة(imagePath):
  image = Image.open(imagePath)  #فتح الصورة
  image = image.point(lambda x: 0 if x<143 else 255) #معالجة كل بكسل في الصورة، لجعل كل نقطة "أسود أو أبيض"
  borderImage = ImageOps.expand(image,border=20,fill='white')
  borderImage.save(imagePath)
تعريف getAuthCode(driver, url="http://localhost/"):
  captchaUrl = url + "common/random"
  driver.get(captchaUrl) 
  time.sleep(0.5)
  driver.save_screenshot("captcha.jpg")  #التقط الشاشة، و احفظ الصورة
  #urlretrieve(captchaUrl, "captcha.jpg")
  time.sleep(0.5)
  تنظيف الصورة("captcha.jpg")
  p = subprocess.Popen(["tesseract", "captcha.jpg", "captcha"], stdout=\
             subprocess.PIPE,stderr=subprocess.PIPE)
  p.wait()
  f = open("captcha.txt", "r")
  #تنظيف أي أحرف فراغية
  captchaResponse = f.read().replace(" ", "").replace("\n", "")
  طبع("Captcha solution attempt: " + captchaResponse)
  إذا كان طول captchaResponse == 4:
    إرجاع captchaResponse
  ELSE:
    إرجاع False
تعريف بدون ملفات الـ Cookie Login(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']").clear()
      driver.find_element_by_xpath("//input[@id='orgCode' and @name='orgCode']").send_keys("orgCode")
      driver.find_element_by_xpath("//input[@id='account' and @name='username']").clear()
      driver.find_element_by_xpath("//input[@id='account' and @name='username']").send_keys("username")
      driver.find_element_by_xpath("//input[@type='password' and @name='password']").clear()
      driver.find_element_by_xpath("//input[@type='password' and @name='password']").send_keys("password")       
      driver.find_element_by_xpath("//input[@type='text' and @name='authCode']").send_keys(authCode)
      driver.find_element_by_xpath("//button[@type='submit']").click()
      try:
        time.sleep(3)
        driver.find_element_by_xpath("//*[@id='side-menu']/li[2]/ul/li/a").click()
        return driver
      except:
        print("كود المصادقة Error:", authCode)
        driver.refresh()
  return driver
driver = withoutCookieLogin("http://localhost/")
driver.get("http://localhost/enterprise/add/")

كيفية الحصول على الشفرة التحقق التي نحتاجها

في هذه الرحلة للحصول على الشفرة التحقق، وقعت في الكثير من الفخاخ، قرأت الكثير من المقالات، والكثير منها يوضح كيفية التعرف على الشفرة التحقق، ولكن لم يوضح كيفية الحصول على الصورة للشفرة التحقق الحالية التي تحتاجها.

طريقتي في التعامل هي:

1. استخدام selenium لفتح عنوان الرابط للصفحة التي ترغب في الدخول إليها url1

2. الحصول على عنوان الشفرة التحقق من عنصر التحقق (في الواقع، الطريقة الأسهل هي فتح صفحة جديدة باستخدام الماوس اليمين)

3: في صفحة url1، إدخال عنوان الرابط url2 للوصول إلى صفحة url2، ثم التقاط الشاشة لتحديد شفرة التحقق

4: معالجة الشفرة للحصول على شفرة التحقق كشريط نصي. ثم النقر على زر التراجع في المتصفح، للعودة إلى صفحة الدخول url1

5: إدخال المعلومات المطلوبة للدخول والشفرة التحقق

6: النقر على الدخول

7: التحقق من الصفحة بعد الدخول، إذا لم يكن النتيجة ناجحة، فيجب إعادة التشغيل من 1 إلى 7.

للحماية من معلومات الشركة، هذه الصفحة هي خدمة محلية قمت بتشغيلها، قمت باختبار طريقة الحصول على هذا الشفرة التحقق في صفحة التسجيل في بلدي على بلدول، يمكن أن يتم ذلك من خلالها. (يقتصر معالجة الشفرة فقط على خلفية الشفرة كنقاط بكسل، إذا كانت الشفرة تحتوي على خطوط يجب معالجتها بشكل إضافي.)

هذا هو نهاية محتويات هذا المقال، آمل أن تكون قد ساعدت في تعلمك، وأتمنى أن تدعمو تعليمات النفخ.

البيان: محتويات هذا المقال تم جمعها من الإنترنت، ملكية المحتويات للمالك الأصلي، تم جمع المحتويات بشكل متعاوني من قبل مستخدمي الإنترنت، ويتم تحميلها بشكل مستقل، ولا تملك هذا الموقع حقوق الملكية، ولا يتم تعديل المحتويات بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية. إذا اكتشفت محتويات مخالفة لحقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال '#' ب '@') لتقديم الشكوى، وتقديم الأدلة ذات الصلة، وسيقوم هذا الموقع بإزالة المحتويات المزعجة بشكل فوري.

أنت قد تعجبك