gpt4 book ai didi

python - 带有动态验证码的 Scrapy

转载 作者:行者123 更新时间:2023-11-28 20:57:06 27 4
gpt4 key购买 nike

我试图破解网站表单中的captcha,但这个验证码是动态的,它没有 URL,而是类似这样的东西

src="captcha?accion=image"

这里最好的选择是什么?我读过一些像使用中间件之类的东西。我也知道它可以用 Selenium 或 Splash 或其他浏览器驱动程序(截图)来完成,但我想只用 Scrapy 来完成,当然如果可能的话。

最佳答案

这是绕过指定captcha的完整解决方案使用 anticaptchaPIL .

由于这个captcha的动态, 我们需要获取 img 的打印屏幕包含 captcha 的元素.为此,我们使用 save_screenshot()PIL裁剪并保存 <img name="imagen"...到磁盘 ( captcha.png )。
然后我们提交 captcha.pnganti-captcha这将返回解决方案,即:

from PIL import Image
from python_anticaptcha import AnticaptchaClient, ImageToTextTask
from selenium import webdriver

def get_captcha():
captcha_fn = "captcha.png"
element = driver.find_element_by_name("imagen") # element name containing the catcha image
location = element.location
size = element.size
driver.save_screenshot("temp.png")

x = location['x']
y = location['y']
w = size['width']
h = size['height']
width = x + w
height = y + h

im = Image.open('temp.png')
im = im.crop((int(x), int(y), int(width), int(height)))
im.save(captcha_fn)

# request anti-captcha service to decode the captcha

api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXX' # api key -> https://anti-captcha.com/
captcha_fp = open(captcha_fn, 'rb')
client = AnticaptchaClient(api_key)
task = ImageToTextTask(captcha_fp)
job = client.createTask(task)
job.join()
return job.get_captcha_text()

start_url = "YOU KNOW THE URL"
driver = webdriver.Chrome()
driver.get(start_url)
captcha = get_captcha()
print( captcha )

输出:

ifds

验证码.png

enter image description here


注意事项:

  • 自行负责使用它(聪明点)
  • 您可以通过正确处理异常来改进代码;
  • anticaptchapaid service (0.5 美元/1000 张图像);
  • 我不隶属于 anticaptcha .

关于python - 带有动态验证码的 Scrapy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com