Leer hoe u met Python een formulier met afbeelding-captcha kunt versturen
Wat u gaat leren
In deze handleiding voor beginners leert u de basisprincipes van het indienen van formulieren met afbeelding-captcha's.
U gaat dit demonstratieformulier met afbeelding-captcha indienen.
Begin met het analyseren van het formulier met uw browser. Ga verder met het bouwen van een code die formuliergegevens extraheert en captcha oplost met Anti Captcha-service.
Eindig met een code die de formuliergegevens verzendt en controleert op een succesvol of mislukt resultaat.
Broncode:
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)