【问题标题】:Use requests to post captcha answer使用请求发布验证码答案
【发布时间】:2021-03-28 06:12:33
【问题描述】:

所以我有这个验证码,我需要解决并使用 Requests Post 方法发送响应,但我不知道如何开始。

<form name="captchaForm" action="/captcha/eval.do" onsubmit="document.captchaForm.hash.value=window.location.hash;">
        <img id="captchaTag" src="/captcha/captcha.do?id=132.204.251.80">
        <audio id="audioCaptchaTag" style="display: none;" preload="auto" onplay="$('#captchaResponse').focus();" controls="" src="/captcha/audioCaptcha.do?id=132.204.251.80&amp;lang=fr&amp;cacheBuster=1aca7bbb658bf40435965772b3343124f" type="audio/wav"></audio>
        <button id="toggleAudio" alt="Click here to access the audible captcha" type="button" onclick="$('#captchaTag').toggle(); $('#audioCaptchaTag').toggle(); $('#captchaResponse').focus(); "><i class="fas fa-headphones"></i></button>
        <input autocapitalize="none" id="captchaResponse" style="margin: 0;" type="text" name="jcaptcha" value="" autofocus="">
        <input type="hidden" name="path" value="/fr/qc/qcrdl/doc/2009/2009canlii97762/2009canlii97762.html">
        <input type="hidden" name="queryString" value="">
        <input type="hidden" name="hash" value="">
        <input type="hidden" name="id" value="132.204.251.80">
        <input type="submit" value="ok">
</form>

现在这是我的脚本,基本上我想用 Post 方法发送输入:

import requests
from bs4 import BeautifulSoup
import cv2

headers = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET',
    'Access-Control-Allow-Headers': 'Content-Type',
    'Access-Control-Max-Age': '3600',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'
    }

session = requests.Session()
req = session.get(url, headers=headers)
soup = BeautifulSoup(req.content, "lxml")
captcha = soup.find("form", {"name": "captchaForm"})
if captcha is None:
   # Do stuff
else:
   print(".......... YOU'VE HIT A CAPTCHA")
   capatchaImage = soup.find("img",{"id":"captchaTag"}).get("src")
   cv2.imshow("captcha", captchaImage)
   cv2.waitKey()
   captchaInput = input("Please enter captcha: "))
   continue

【问题讨论】:

    标签: python post captcha python-requests-html


    【解决方案1】:

    我在尝试刮canlii时遇到了这个答案。我还没有设法解决验证码,但发现通过 webdriver 冲浪同时刮擦减少了大约 20 倍的验证码。通过每次我打验证码时切换我的 IP 地址,我已经设法将我的抓取时间提高到 100%。如果您可以使用一些灵感,这里有一些代码:https://github.com/isovector/canlii-scraper/blob/23ba62bde125c150f152c710a7b5506aa88d2555/src/Lib.hs#L35-L46

    【讨论】:

    • 嘿,谢谢!这就是我最后所做的。将 Tor 与 Selenium 一起使用也对我有所帮助。有点想知道你在刮 Canlii 的哪一部分。
    猜你喜欢
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多