微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2Captcha + python + selenium ERROR_ZERO_CAPTCHA_FILESIZE

如何解决2Captcha + python + selenium ERROR_ZERO_CAPTCHA_FILESIZE

我正在尝试将图像验证码上传到 2captcha API,但收到错误 ERROR_ZERO_CAPTCHA_FILESIZE 但我目录中的文件大小超过 60KB 为什么我仍然收到此错误? >

我错过了什么吗?

我尝试发送唯一的验证码图像(最初从源下载),但收到相同的错误TOO_MANY_BAD_IMAGES。请帮帮我。

代码

from selenium import webdriver
import requests

driverop = webdriver.ChromeOptions()
driverop.add_argument("--start-maximized")
proxy = "118.174.233.45:44061"
driverop = webdriver.ChromeOptions()
driverop.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome("chromedriver/chromedriver",options=driverop)
driver.get("https://accounts.google.com/o/oauth2/auth/oauthchooseaccount?client_id=717762328687-iludtf96g1hinl76e4lc1b9a82g457nn.apps.googleusercontent.com&scope=profile%20email&redirect_uri=https%3A%2F%2Fstackauth.com%2Fauth%2Foauth2%2Fgoogle&state=%7B%22sid%22%3A1%2C%22st%22%3A%2259%3A3%3Abbc%2C16%3Af9ef16faad8743e2%2C10%3A1609613474%2C16%3Aa2c13dc2511eb0d0%2Ccb47135ca2a3bc9ca4ee712429ddf5c0935588f518c964242057bb74b818d4de%22%2C%22cdl%22%3Anull%2C%22cid%22%3A%22717762328687-iludtf96g1hinl76e4lc1b9a82g457nn.apps.googleusercontent.com%22%2C%22k%22%3A%22Google%22%2C%22ses%22%3A%22e15efb6754f4498991cd1d37a967f325%22%7D&response_type=code&flowName=GeneralOAuthFlow")
driver.find_element_by_id("identifierId").send_keys(EMAIL)
driver.find_element_by_css_selector('.VfPpkd-LgbsSe-OWXEXe-k8QpJ > div:nth-child(3)').click()
driver.save_screenshot("sample.png")
url = 'http://2captcha.com/in.PHP'
API_KEY = "---"
files = {'file': open('sample.png',"rb")}
data = {'key': API_KEY,'method': 'post'}
r = requests.post(url,files=files,data=data)
if r.ok:
    print(r)
url = "http://2captcha.com/in.PHP?key="+API_KEY+"&action=get&id="+r.text[3:]
for xr in range(1,10):  
    sleep(1.5) # wait 5 sec.
    resp = requests.get(url)
    if resp.text[0:2] == 'OK':
        break
    else:
        print(resp)

解决方法

如果您使用 driver.save_screenshot,您将根据文档 (WebDriver.save_screenshot) 保存当前窗口。尝试返回元素并使用 webelement.screenshot 方法 (WebElement.screenshot)

from selenium import webdriver
import requests

driverop = webdriver.ChromeOptions()
driverop.add_argument("--start-maximized")
proxy = "118.174.233.45:44061"
driverop = webdriver.ChromeOptions()
driverop.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome("chromedriver/chromedriver",options=driverop)
driver.get("https://accounts.google.com/o/oauth2/auth/oauthchooseaccount?client_id=717762328687-iludtf96g1hinl76e4lc1b9a82g457nn.apps.googleusercontent.com&scope=profile%20email&redirect_uri=https%3A%2F%2Fstackauth.com%2Fauth%2Foauth2%2Fgoogle&state=%7B%22sid%22%3A1%2C%22st%22%3A%2259%3A3%3Abbc%2C16%3Af9ef16faad8743e2%2C10%3A1609613474%2C16%3Aa2c13dc2511eb0d0%2Ccb47135ca2a3bc9ca4ee712429ddf5c0935588f518c964242057bb74b818d4de%22%2C%22cdl%22%3Anull%2C%22cid%22%3A%22717762328687-iludtf96g1hinl76e4lc1b9a82g457nn.apps.googleusercontent.com%22%2C%22k%22%3A%22Google%22%2C%22ses%22%3A%22e15efb6754f4498991cd1d37a967f325%22%7D&response_type=code&flowName=GeneralOAuthFlow")
driver.find_element_by_id("identifierId").send_keys(EMAIL)
element = driver.find_element_by_css_selector('.VfPpkd-LgbsSe-OWXEXe-k8QpJ > div:nth-child(3)').click()
element.screenshot("sample.png")
url = 'http://2captcha.com/in.php'
API_KEY = "---"
files = {'file': open('sample.png',"rb")}
data = {'key': API_KEY,'method': 'post'}
r = requests.post(url,files=files,data=data)
if r.ok:
    print(r)
url = "http://2captcha.com/in.php?key="+API_KEY+"&action=get&id="+r.text[3:]
for xr in range(1,10):  
    sleep(1.5) # wait 5 sec.
    resp = requests.get(url)
    if resp.text[0:2] == 'OK':
        break
    else:
        print(resp)
,

关于您的评论,我认为您的问题是使用 2captcha API?

如果是这样,不要使用请求模块,而是尝试他们的内部 API TwoCaptcha

安装方式:pip3 install 2captcha-python

我在这里有一个片段,您可以尝试上传您的样本:

import sys
import os

sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from twocaptcha import TwoCaptcha

api_key = os.getenv('APIKEY_2CAPTCHA','YOUR_API_KEY')

solver = TwoCaptcha(api_key)

try:
    result = solver.normal('path/to/captcha.jpg')

except Exception as e:
    sys.exit(e)

else:
    sys.exit('solved: ' + str(result))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。