python 如何避免在回答验证码时检测到 selenium ?

lkaoscv7  于 2022-12-02  发布在  Python
关注(0)|答案(1)|浏览(151)

我有一个Python脚本,它使用一些凭据登录到一个页面(sso.acesso.gov.br),他们通常使用2Captcha API回答验证码。
问题是,最近它采取了一个错误后,验证码的答案,即使当我手动回答。顺便说一句,收到的错误信息是不同的,当我强迫回答错误,这使我相信我的脚本现在已经被检测到不知何故的网站。
如果我以用户身份打开Chrome浏览器,只需执行相同的步骤,我就可以登录,有时甚至不用验证码,而且每次都不会出错。
下面是我的代码:

from selenium import webdriver
from fake_useragent import UserAgent
import undetected_chromedriver as uc
from fp.fp import FreeProxy

user_path = 'C:\\PythonProjects\\User Data'
driver_path = 'C:\\PythonProjects\\107\\chromedriver.exe'

options = webdriver.ChromeOptions()

## Tactics to avoid being detected as automation
options.add_argument("--start-maximized")
options.add_argument('--disable-blink-features=AutomationControlled')

## User profile
options.add_argument(f"--user-data-dir={user_path}")

## User agent
ua = UserAgent()
options.add_argument(f'--user-agent={ua.random}')

## Proxy
proxy = FreeProxy().get()
options.add_argument(f'--proxy-server={proxy}')

## Set browser
driver = uc.Chrome(
    driver_executable_path = driver_path,
    options = options
)

## Set device memory info
driver.execute_script("Object.defineProperty(navigator, 'deviceMemory', {get: () => 8});")

## Set navigator webdriver to undefined
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined});")

## Open page
driver.get('https://sso.acesso.gov.br/login')

## From this point I insert CPF (user) and password, then answer captcha using 2Captcha
## I also have tried just set the browser and navigate manually, inserting data and answering captcha, but no success

你有什么建议绕过这个阻止?我不知道是什么检测和阻止我的浏览器。
如果我在bot.sannysoft.com上使用脚本,会得到以下结果:
Intoli tests
Fingerprint Scanner 1/2
Fingerprint Scanner 2/2

uxhixvfz

uxhixvfz1#

在你第一次输入正确的验证码之前,再等待几秒钟,这可能会起作用,除非它另有设计。

相关问题