python - 如何使用 python 和 selenium 在注册页面上解决可点击的验证码,如 recaptcha v2?
问题描述
我正在使用 python 创建 selenium 代码来解决需要使用 2captcha API 单击图像“ReCaptcha V2”的验证码。
请检查:https ://2captcha.com/2captcha-api#solving_clickcaptcha
我的第一个问题是以随机名称获取屏幕截图并将其压缩到 100Kb 以下并与我的 http post 请求一起发送。
我的第二个问题是如何模拟点击“OK|coordinate:x=39,y=59;x=252,y=72”
验证码解决后如何删除图像?
我的代码:
from selenium import webdriver
from time import sleep, time
from PIL import Image
import requests
import time
# open signup page
browser = webdriver.Chrome('D:\chromedriver')
browser.get('http://testing-ground.scraping.pro/recaptcha')
browser.maximize_window()
# click on checkbox
recaptcha = browser.find_element_by_xpath("//*[@role='presentation']"); time.sleep(3)
recaptcha.click(); time.sleep(3)
#get screenshot
browser.get_screenshot_as_file('iamcaptchaimage.jpg')
#send http request 'post'
url = 'http://2captcha.com/in.php'
files = {'file': open('iamcaptchaimage.jpg', 'rb')}
url = 'http://2captcha.com/in.php'
files = {'file': open('iamcaptchaimage.jpg', 'rb')}
data = {'key': '***', 'method': 'post','coordinatescaptcha':'1','textinstructions':'click on fire hydrant'}
resp = requests.post(url, files=files, data=data)
if resp.ok:
captcha_id = resp.text[3:]
print(captcha_id)
# send http request 'get'
fetch_url = "http://2captcha.com/res.php?key=****&action=get&id=" + captcha_id
for i in range(1, 10):
sleep(5) # wait 5 sec.
resp = requests.get(fetch_url)
if resp.text[0:2] == 'OK':
break
print(resp.text[3:])
解决方案
推荐阅读
- html - 如何让我的侧边栏在大屏幕上的页面加载时自动打开并在小屏幕上关闭?
- bash - 通过 .bash_profile 在终端中显示活动的 conda 虚拟环境
- python - 通过新创建的继承 SQLAlchemy 类设置所需的外键
- laravel - 如何使用颤振在数据库 laragon 中插入日期数据?
- facebook - 模式中的 FB.login 未打开弹出窗口
- php - 在woocommerce中显示没有折扣的产品价格
- batch-file - 使用 .bat 文件在每行输出 txt 文件的开头插入文件名
- sql - 如何在列中查找带有英文字符的名称?
- android - 二进制 XML 文件第 25 行:膨胀类 TextView 时出错
- c++ - 使用 Switch-case 语句拉取随机扑克牌等级和花色以显示用户