如何在抓取时通过pythonrequests完成geetest(captcha),而请求值通过手动解决captcha获得?

2024-10-05 13:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试清理使用datadome的网站,在一些请求之后,我必须完成geetest(滑块验证码谜题)

以下是指向它的示例链接: captcha link

我已经决定不使用selenium(至少现在是这样),我正试图通过python模块:请求来解决我的问题。 我的想法是自己完成geetest,然后在我的程序中发送相同的请求,即我的web浏览器在完成滑块后发送的请求

  1. 一开始,我在验证码提示后从网站上获取了html代码:

    <head><title>allegro.pl</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script>var dd={'cid':'AHrlqAAAAAMAsB0jkXrMsMAsis8SQ==','hsh':'77DC0FFBAA0B77570F6B414F8E5BDB','t':'fe','s':29701,'host':'geo.captcha-delivery.com'}</script><script src="https://ct.captcha-delivery.com/c.js"></script></body></html>
    
  2. 我无法访问最重要信息所在的iframe,但我发现可以使用上面html代码中的信息构建指向该iframe的链接。正如您在上面的链接中所看到的: cid是initialCid,hsh是hash等等,链接的一部分,cid是我在出现captcha时得到的cookie

  3. 我已经看到有可用的服务可以为u解决验证码问题,所以我决定自己完成验证码,然后向我的程序发送确切的请求,包括cookie和头,然后在我的程序中按请求发送请求。现在我是用手做的,但是不行。响应为403,手动时为200并重定向

以下是我的浏览器在完成验证码后发送的示例请求:

sample request

我通过以下方式将其发送到程序中:

s = requests.Session()
s.headers = headers
s.cookies.set(cookie_from_web_browser)
captcha = s.get(request)

回复是403,我不知道如何让它工作,帮帮我


Tags: 程序示例网站链接stylecookiehtmlscript
1条回答
网友
1楼 · 发布于 2024-10-05 13:16:01

在网络抓取世界中,验证码非常棘手,大多数情况下,您可以通过解决验证码,然后手动获取返回源的cookie并将其插入到脚本中来绕过此问题。根据网站的不同,饼干可以保存15分钟、一天甚至更长时间

另一种选择是使用验证码解决服务,如https://www.scraperapi.com/,您必须为x个数量的请求支付费用,但您不会遇到验证码问题,因为它们会为您解决问题

相关问题 更多 >

    热门问题