Menu

เรียนรู้วิธีส่งแบบฟอร์มที่มี Captcha แบบรูปภาพโดยใช้ Python


สิ่งที่คุณจะได้เรียนรู้

  • ในบทช่วยสอนสำหรับผู้เริ่มต้นนี้ คุณจะได้เรียนรู้หลักการพื้นฐานของการส่งแบบฟอร์มที่มี Captcha แบบรูปภาพ
  • คุณจะส่งแบบฟอร์มสาธิตที่มี Captcha แบบรูปภาพนี้
  • เริ่มต้นโดยวิเคราะห์แบบฟอร์มด้วยเบราว์เซอร์ของคุณ ดำเนินการต่อด้วยการสร้างโค้ดที่ดึงข้อมูลในแบบฟอร์มและแก้ Captcha ด้วยบริการ Anti Captcha
  • ปิดท้ายด้วยโค้ดที่ส่งข้อมูลในแบบฟอร์มและตรวจสอบผลลัพธ์ที่สำเร็จ

ซอร์สโค้ด:

from anticaptchaofficial.imagecaptcha import *
import requests
import base64


def find_between(s, start, end):
    return (s.split(start))[1].split(end)[0]


response = requests.get("https://anti-captcha.com/demo?page=image_captcha")
base64str = find_between(response.text, ";base64,", "\">")
c_str = find_between(response.text, " name=\"c\" value=\"", "\">")

print(f"base64: {base64str}")
print(f"c_str: {c_str}")

# save base64 image to a temporary file
with open("tmp.file", "wb") as file:
    file.write(base64.urlsafe_b64decode(base64str))


solver = imagecaptcha()
solver.set_verbose(1)
solver.set_key("API_KEY_HERE")
captcha_text = solver.solve_and_return_solution("tmp.file")
if captcha_text != 0:
    print("captcha text "+captcha_text)
    res = requests.post("https://anti-captcha.com/demo/submit_image.php", data={
        "login": "testlogin",
        "pass": "testpass",
        "c": c_str,
        "captcha": captcha_text
    })
    if "test passed" in res.text:
        print("Our test passed!")
    if "Captcha test not passed" in res.text:
        print("Test NOT passed!")
else:
    print("task finished with error "+solver.error_code)

Github

https://github.com/anti-captcha/solving-captcha-concepts/blob/master/tutorial5.py