概述
隐身模式提供完整的反爬虫规避能力,自动添加真实浏览器的请求头,模拟真实用户行为,有效绕过常见的反爬虫检测。
解决的问题
- 请求头不完整:自动添加 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' |
隐身模式使用的浏览器类型,可选值:
|
方式二:使用 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() 等,以及:
get_cookies():获取当前所有 Cookieclear_cookies():清空所有 Cookie
使用示例
基本用法
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 个)
- User-Agent
- Accept
- Accept-Language
- Accept-Encoding
- Sec-Fetch-Dest
- Sec-Fetch-Mode
- Sec-Fetch-Site
- Sec-Fetch-User
- Sec-CH-UA
- Sec-CH-UA-Mobile
- Sec-CH-UA-Platform
- Upgrade-Insecure-Requests
- Cache-Control
- Connection
- DNT
Firefox 请求头(12 个)
- User-Agent
- Accept
- Accept-Language
- Accept-Encoding
- Sec-Fetch-Dest
- Sec-Fetch-Mode
- Sec-Fetch-Site
- Sec-Fetch-User
- Upgrade-Insecure-Requests
- Connection
- DNT
- Sec-GPC(Firefox 特有)
辅助函数
cfspider.get_stealth_headers()
获取指定浏览器的隐身请求头。
python
headers = cfspider.get_stealth_headers('chrome')
print(headers)
cfspider.random_delay()
随机延迟函数。
python
cfspider.random_delay(1, 3) # 随机等待 1-3 秒