影刀RPA 网页反爬策略的识别与应对方法

影刀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)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d53a2c8dcd6b4e11b4226a0048950eca.png#pic_center)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分钟后重试")![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cdcf0be7e7954e7392005129449dfe63.png#pic_center)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小时。

解决:评估实际需要的频率。大部分网站对正常频率的访问不会拦截。可以逐步加速测试,找到临界点。


总结:反反爬的核心不是技术,是策略——先在最低频率下确保能采集到数据,然后逐步提速直到触发反爬,再回调到安全速度。不要一开始就上全部反反爬手段,那只会让你的行为更可疑。