我正在开发一个软件,它可以访问网站,单击一些按钮,关闭浏览器,然后循环执行一遍。但问题是:我正在尝试为受 CloudFlare 保护的网站执行此操作。在不使用任何代理的情况下,它可以绕过大部分时间,但当我使用代理时,它不能绕过 99%。
while True:
# renew_tor_ip()
# for x in goodProxy:
if driversN < driverLimit:
driversN += 1
randomList = proxyList[randint(0, len(proxyList)-1)]
print(randomList)
if opt == 'y':
cmd = f'pytest w.py --gui --uc --proxy={randomList} --no-summary -q --multi-proxy --disable-ws'
elif opt == 'n':
cmd = f'pytest w.py --gui --uc --no-summary -q --disable-ws'
Thread(target=access_site, args=(cmd, )).start()
if driversN >= driverLimit:
print(f'sleeping', end='\r')
time.sleep(0.5)
我认为我需要对这部分代码进行一些更改才能解决问题。
网站是 dexscreener.com。我试图找到它的直接 IP 地址,这样我就可以在没有 CloudFlare 的情况下连接网站,但似乎他们之前就想到了,所以我在任何地方都找不到它。我正在使用 Seleniumbase 的未检测到的 chromedriver 模式,但当我使用代理时它没有帮助。
让我们从一个使用 SeleniumBase UC 模式绕过受 Cloudflare 保护的站点的基本示例开始:(如果第一次被阻止,则包括重试。)
from seleniumbase import SB
with SB(uc=True) as sb:
url = "https://gitlab.com/users/sign_in"
sb.driver.uc_open_with_reconnect(url, 4)
if not sb.is_text_visible("Username", '[for="user_login"]'):
sb.driver.uc_open_with_reconnect(url, 6)
SB()
可以采用以下格式的 proxy
参数:
server:port
username:password@server:port
假设代理地址尚未被识别为机器人流量源,则将
proxy
设置为 SB()
应该可以。