You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium能否生成网站真实流量?Python脚本无效求解决方法

如何用Selenium生成接近真实的网站流量

我之前也踩过这个坑——用Selenium写的脚本刚跑起来就被网站识别成机器人流量了。其实核心问题是Selenium默认的行为太“规整”,很容易被反爬机制盯上。下面分享几个我亲测有效的方案,附代码示例:

1. 隐藏Selenium的自动化特征

网站最常用的识别方式就是检查window.navigator.webdriver属性,默认情况下Selenium会把它设为true。我们要把这个属性改掉,同时禁用一些自动化相关的浏览器开关:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 禁用自动化扩展和提示
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 先加一个示例UA,后面会讲随机化
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=options)
# 修改webdriver属性,伪装成普通浏览器
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

2. 模拟真实的用户交互节奏

真实用户不会瞬间完成点击,他们会有停顿、滚动、鼠标移动等行为。我们要加入随机等待、鼠标动作:

import time
import random
from selenium.webdriver.common.action_chains import ActionChains

def random_wait(min_sec=2, max_sec=5):
    time.sleep(random.uniform(min_sec, max_sec))

# 打开页面后先随机滚动,模拟用户浏览
driver.get("https://your-target-site.com")
random_wait()
# 随机滚动到页面某个位置
driver.execute_script(f"window.scrollTo(0, {random.randint(100, 800)})")
random_wait()

# 模拟鼠标移动到链接上,停顿一下再点击
link = driver.find_element("xpath", "//a[contains(text(), '目标链接')]")
ActionChains(driver).move_to_element(link).pause(random.uniform(0.5, 1.5)).click().perform()
random_wait()

3. 使用随机化的用户代理

每次请求用不同的UA,模拟不同的设备和浏览器。可以维护一个UA列表,每次随机选一个:

user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Mobile/15E148 Safari/604.1",
    # 可以去网上找更多不同设备、浏览器的UA补充
]

# 每次启动浏览器随机选一个UA
options.add_argument(f"user-agent={random.choice(user_agents)}")

4. 模拟真实的浏览路径

不要只循环点击链接,要模拟用户的真实流程:比如先看首页,点一个链接进去,停留一会儿,滚动页面,可能返回首页,再点另一个链接,甚至中途打开新标签页:

# 模拟完整的用户浏览流程
driver.get("https://your-target-site.com")
random_wait(3, 6)
# 随机选一个首页的链接
home_links = driver.find_elements("tag name", "a")
if home_links:
    # 过滤掉无效链接(比如空href的)
    valid_links = [link for link in home_links if link.get_attribute("href") and "http" in link.get_attribute("href")]
    if valid_links:
        random_link = random.choice(valid_links)
        ActionChains(driver).move_to_element(random_link).pause(1).click().perform()
        random_wait(4, 8)
        # 滚动详情页到底部
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
        random_wait(2, 4)
        # 返回首页
        driver.back()
        random_wait(2, 3)
        # 再选另一个不同的链接
        another_links = [link for link in valid_links if link != random_link]
        if another_links:
            another_link = random.choice(another_links)
            another_link.click()
            random_wait(3, 5)

5. 关键注意事项

  • 不要过于频繁请求,控制请求频率,避免短时间内大量操作触发风控
  • 严格遵守网站的robots.txt和使用条款,滥用可能导致IP被永久封禁
  • 如果需要大量模拟,可以配合高质量的代理IP使用,但要注意代理的纯净度,避免用被标记为爬虫的代理

最后提醒一下:即使做了这些优化,也不能100%保证完全和真实流量一样,但已经能大幅降低被识别的概率,让你的流量更接近真实用户行为。

内容的提问来源于stack exchange,提问作者Maha Waqar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:07:06