概述

隐身模式提供完整的反爬虫规避能力,自动添加真实浏览器的请求头,模拟真实用户行为,有效绕过常见的反爬虫检测。

解决的问题
  • 请求头不完整:自动添加 15+ 个真实浏览器请求头
  • 缺乏会话一致性:固定 User-Agent,自动管理 Cookie
  • 行为模式单一:随机延迟,自动添加 Referer

方式一:单次请求启用隐身模式

在请求时直接启用隐身模式。

使用示例

python
import cfspider

# 启用隐身模式
response = cfspider.get(
    "https://example.com",
    stealth=True,
    stealth_browser='chrome'
)
# 自动添加 15+ 个完整浏览器请求头

参数说明

参数 类型 默认值 说明
stealth bool False 是否启用隐身模式。True 时自动添加完整浏览器请求头
stealth_browser str 'chrome'

隐身模式使用的浏览器类型,可选值:

  • chrome:Chrome 131(推荐,15 个请求头)
  • firefox:Firefox 133(12 个请求头,含隐私保护头)
  • safari:Safari 18(5 个请求头,macOS 风格)
  • edge:Edge 131(14 个请求头)
  • chrome_mobile:Chrome Mobile(10 个请求头,Android)

方式二:使用 StealthSession

使用 StealthSession 保持会话一致性,提供更强大的隐身能力。

类定义

python
class StealthSession:
    def __init__(
        self,
        browser: str = 'chrome',
        cf_proxies: str = None,
        cf_workers: bool = True,
        delay: Tuple[float, float] = None,
        auto_referer: bool = True,
        token: str = None,
        **kwargs
    )

初始化参数

参数 类型 默认值 说明
browser str 'chrome' 浏览器类型:chrome, firefox, safari, edge, chrome_mobile
cf_proxies str None Workers 代理地址
cf_workers bool True 是否使用 CFspider Workers API
delay Tuple[float, float] None 随机延迟范围(秒),如 (1, 3) 表示每次请求前随机等待 1-3 秒
auto_referer bool True 是否自动添加 Referer。True 时,后续请求会自动添加上一个请求的 URL 作为 Referer
token str None Workers API 鉴权 token

属性

属性 类型 说明
browser str 当前使用的浏览器类型
cf_proxies str 代理地址
delay tuple 随机延迟范围
auto_referer bool 是否自动添加 Referer
last_url str 上一次请求的 URL
request_count int 会话累计请求次数

方法

提供所有 HTTP 方法:get(), post(), put(), delete() 等,以及:

使用示例

基本用法

python
import cfspider

# 基本用法
with cfspider.StealthSession(browser='chrome') as session:
    # 第一次请求:Sec-Fetch-Site: none
    r1 = session.get("https://example.com")
    
    # 第二次请求:自动添加 Referer: https://example.com
    # Sec-Fetch-Site: same-origin
    r2 = session.get("https://example.com/page2")

带随机延迟

python
with cfspider.StealthSession(delay=(1, 3)) as session:
    for url in urls:
        # 每次请求前随机等待 1-3 秒
        response = session.get(url)

结合代理使用

python
with cfspider.StealthSession(
    cf_proxies="https://your-workers.dev",
    browser='firefox',
    delay=(0.5, 2.0)
) as session:
    response = session.get("https://example.com")
    print(f"请求次数: {session.request_count}")
    print(f"当前 Cookie: {session.get_cookies()")

请求头详情

隐身模式会自动添加以下类型的请求头:

Chrome 请求头(15 个)

Firefox 请求头(12 个)

辅助函数

cfspider.get_stealth_headers()

获取指定浏览器的隐身请求头。

python
headers = cfspider.get_stealth_headers('chrome')
print(headers)

cfspider.random_delay()

随机延迟函数。

python
cfspider.random_delay(1, 3)  # 随机等待 1-3 秒