影刀RPA 网页反爬策略的识别与应对方法
影刀RPA 网页反爬策略的识别与应对方法
作者:林焱
什么情况用这个
流程跑着跑着,突然就采集不到数据了——要么返回空列表、要么弹出验证码、要么直接跳转到错误页面。你不是被人为封禁了,是被网站的反爬系统给拦下来了。
反爬系统检测的不是"你是不是机器人",而是"你的行为像不像人"。频率太高、请求规律太明显、缺少正常的浏览器特征——这些都是被识别出来的原因。这篇文章教你识别常见的反爬信号,并给出对应的躲过策略。
怎么做
第一步:识别反爬信号
| 信号 | 现象 | 可能性 |
|---|---|---|
| 验证码弹窗 | 突然出现滑块/点选验证码 | 99%是反爬 |
| 数据返回为空 | 选择器没问题但get不到数据 | 数据被接口拦截 |
| HTTP 403/429 | 禁止访问/请求过多 | IP被限 |
拼多多店群自动化上架方案
| 页面跳转 | 自动跳到验证页面或错误页 | 检测到自动化 |
| 元素存在找不到 | F12能看到但Selenium报不存在 | 元素被隐藏或延迟 |
| 提示"请刷新" | 弹出"网络异常请刷新" | 前端防爬提示 |
第二步:反反爬——从简单到激进
基础手段(低风险):
# 1. 随机延迟importrandom,time time.sleep(random.uniform(1,3))# 2. 请求头伪装fromselenium.webdriver.chrome.optionsimportOptions options=Options()options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')options.add_argument('--disable-blink-features=AutomationControlled')# 3. 隐藏webdriver特征driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source':''' Object.defineProperty(navigator, 'webdriver', {get: () => undefined}); window.chrome = {runtime: {}}; '''})中级手段:
# 4. 模拟鼠标轨迹(不只是瞬间移动)importpyautoguidefhuman_move(target_x,target_y):current_x,current_y=pyautogui.position()steps=random.randint(10,25)foriinrange(steps):progress=(i+1)/steps# 贝塞尔曲线模拟cx=current_x+(target_x-current_x)*progress+random.uniform(-3,3)cy=current_y+(target_y-current_y)*progress+random.uniform(-3,3)pyautogui.moveTo(cx,cy,duration=random.uniform(0.01,0.05))# 5. 随机滚动driver.execute_script(f"window.scrollBy(0,{random.randint(100,500)});")time.sleep(random.uniform(1,2))# 6. Cookie复用——减少登录次数# 把登录后的Cookie保存下来,下次直接用高级手段:
# 7. IP轮换(代理池)proxies=["http://proxy1:8080","http://proxy2:8080"]proxy=random.choice(proxies)# 8. 多账号轮换# 每次采集随机选一个账号的Cookie,分摊请求量# 9. 降低并发——单线程慢速采集time.sleep(random.uniform(3,8))# 每条数据间隔3-8秒第三步:被检测到的后手
当反爬已经触发后:
# 1. 检测验证码并暂停(不要硬刚)defcheck_captcha():try:captcha=driver.find_element(By.CSS_SELECTOR,".captcha, #verify, .geetest")returnTrueexcept:returnFalseifcheck_captcha():print("检测到验证码,暂停30分钟后重试")time.sleep(1800)# 2. 检测IP封禁defcheck_blocked():ifdriver.title=="Access Denied"or"403"indriver.page_source[:500]:returnTruereturnFalse有什么坑
坑一:过度反反爬反而更显眼
现象:又是换IP又是随机ua又是无头模式,忙活半天反而更容易被检测。
原因:反爬系统看的是"整体画像"。你用了代理IP但是浏览器指纹暴露了你是自动化工具——矛盾的行为反而触发告警。
TEMU店群如何管理运营?
解决:从最简单的做起——先加随机延迟和请求头伪装,确实被拦了再上IP轮换。不要一次性上所有手段。
坑二:Cookie过期没处理
现象:保存的Cookie用了几天就不能用了,但流程没有检测机制,一直用过期Cookie采集空数据。
解决:采集前检查登录状态,Cookie失效则重新登录。
坑三:无视网站的robots.txt
现象:无视网站规则强行采集,导致IP或账号被永久封禁。
解决:正规业务采集前先查看网站的robots.txt和用户协议,遵守合理限制。
坑四:采集频率为了安全设得太低
现象:每条数据间隔10秒,1000条数据要采将近3小时。
解决:评估实际需要的频率。大部分网站对正常频率的访问不会拦截。可以逐步加速测试,找到临界点。
总结:反反爬的核心不是技术,是策略——先在最低频率下确保能采集到数据,然后逐步提速直到触发反爬,再回调到安全速度。不要一开始就上全部反反爬手段,那只会让你的行为更可疑。
