如何在使用 Web 驱动程序运行自动化 Python 脚本时处理 recaptcha

问题描述 投票:0回答:1

我正在开发一个项目,该项目涉及使用网络驱动程序搜索并获取学校的网站链接。我的脚本必须查找大约 10 万所学校,因此需要自动化。但是,我不断遇到验证码检测到我的脚本是机器人的问题,并且需要有关该怎么做的建议。以下是我正在使用的规格: Python 硒与 chromedriver VS代码 Macbook

我在查找每个网站后实现了 time.sleep ,并且它的睡眠时间是从 4、5 或 6 秒中随机选择的。

我还添加了一个函数,可以使用 JavaScript 命令随机选择滚动网页的像素数,以模拟人的实际交互。

我也尝试过无头和非无头,但非无头会立即被验证码标记,而无头可以在被标记之前完成大约 15 所学校。

python selenium-webdriver recaptcha
1个回答
0
投票
  1. from selenium.webdriver.common.proxy import Proxy, ProxyType def set_proxy(driver, proxy_ip): 代理=代理() proxy.proxy_type = ProxyType.MANUAL proxy.http_proxy = proxy_ip proxy.add_to_capability(webdriver.DesiredCapability.CHROME) driver.start_session(webdriver.DesiredCapability.CHROME)

from selenium.webdriver.common.by import By from
selenium.webdriver.common.keys import Keys from
selenium.webdriver.common.action_chains import ActionChains from
fake_useragent import UserAgent
 
 def get_driver():
     user_agent = UserAgent().random
     options = webdriver.ChromeOptions()
     options.add_argument(f'user-agent={user_agent}')
     driver = webdriver.Chrome(chrome_options=options)
    return driver
  1. 导入请求

      def solve_captcha(captcha_image_path):
          api_key = 'YOUR_2CAPTCHA_API_KEY'
          captcha_image = open(captcha_image_path, 'rb')
          response = requests.post(
              "http://2captcha.com/in.php",
              files={'file': captcha_image},
              data={'key': api_key}
          )
          captcha_id = response.text.split('|')[1]
          result = requests.get(
              f"http://2captcha.com/res.php?key={api_key}&action=get&id={captcha_id}"
          )
          return result.text.split('|')[1]
    
© www.soinside.com 2019 - 2024. All rights reserved.