Selenium访问offspring.co.uk触发Akamai反爬被拒该如何解决
规避Akamai Bot-Protection反爬的可行方案
- 替换原生Selenium驱动,抹除自动化特征
原生Selenium会暴露window.navigator.webdriver、document.documentElement.getAttribute("webdriver")等数十个可被检测的特征标识,Akamai的规则库已经覆盖了这些特征。推荐使用undetected-chromedriver替代原生驱动,该工具会自动修改所有常见的自动化指纹,无需手动配置大量参数。
代码示例(替换原有驱动初始化逻辑即可):
import undetected_chromedriver as uc from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver import ActionChains from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time import random def call_Website(): # 初始化undetected chromedriver options = uc.ChromeOptions() # 加载本地用户配置(可选,提升环境真实性) # options.add_argument(f"user-data-dir=C:/Users/你的用户名/AppData/Local/Google/Chrome/User Data") options.add_argument("--disable-blink-features=AutomationControlled") # UA需要和当前实际使用的Chrome版本对应,不要使用过期版本号 options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") browser = uc.Chrome(options=options) wait = WebDriverWait(browser,20) action = ActionChains(browser) # 后续页面访问、操作逻辑可保留,调整输入点击规则即可
- 优化人机交互模拟逻辑
当前的操作间隔都是固定值、轨迹过于规律,很容易被行为检测识别:- 输入账号密码时,拆分字符逐个输入,每个字符间隔随机0.1~0.5秒,不要一次性填充完成
- 鼠标移动、点击位置增加随机偏移,不要每次都精准落在元素中心位置,偏移范围控制在元素宽高的10%以内
- 操作间隔使用随机值代替固定的time.sleep,比如等待2秒改为
time.sleep(random.uniform(1.5,2.5))
- 调整环境与请求特征
- 不要使用数据中心代理,优先使用住宅代理IP,IP归属地要和浏览器语言、时区设置匹配
- 禁用浏览器的无痕模式,尽可能保留浏览历史、Cookie等数据,模拟真实用户的日常使用环境
- 可以随机开启一些无关的标签页,在操作登录前模拟少量滚动页面、点击无关区域的行为,降低操作的目的性
- 特殊指纹随机化
如果上述操作仍然被拦截,可以配置浏览器随机化Canvas、WebGL、字体等硬件指纹,避免因为固定指纹被拉黑。
内容的提问来源于stack exchange,提问作者dontoronto
相关产品推荐
相关产品推荐

