本文目录导读:

- 使用
requests库设置请求头 - 使用
urllib库设置请求头 - 使用随机User-Agent(反反爬虫技巧)
- 完整的请求头示例(模拟真实浏览器)
- 使用
scrapy框架设置请求头 - 重要提示
- 获取真实浏览器请求头的方法
在Python爬虫中设置请求头(Headers)是为了模拟浏览器行为,避免被服务器识别为爬虫而拒绝访问,以下是几种常见的方法:
使用 requests 库设置请求头
基本用法
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
response = requests.get('https://example.com', headers=headers)
使用Session对象(推荐用于多次请求)
import requests
session = requests.Session()
session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
})
# 后续所有使用session的请求都会自动带上这个User-Agent
response1 = session.get('https://example.com/page1')
response2 = session.get('https://example.com/page2')
使用 urllib 库设置请求头
from urllib.request import Request, urlopen
url = 'https://example.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
req = Request(url, headers=headers)
response = urlopen(req)
使用随机User-Agent(反反爬虫技巧)
使用fake-useragent库
pip install fake-useragent
from fake_useragent import UserAgent
import requests
ua = UserAgent()
headers = {
'User-Agent': ua.random, # 随机生成User-Agent
'Accept': '*/*'
}
response = requests.get('https://example.com', headers=headers)
自定义User-Agent列表
import requests
import random
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1'
]
headers = {
'User-Agent': random.choice(user_agents),
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
response = requests.get('https://example.com', headers=headers)
完整的请求头示例(模拟真实浏览器)
import requests
headers = {
# 基本浏览器标识
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
# 接受的内容类型
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
# 接受的语言
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
# 接受的编码方式
'Accept-Encoding': 'gzip, deflate, br',
# 连接类型
'Connection': 'keep-alive',
# 缓存控制
'Cache-Control': 'max-age=0',
# 来源页面(重要)
'Referer': 'https://www.google.com/',
# 是否升级不安全的请求
'Upgrade-Insecure-Requests': '1',
# Cookie(如果需要)
'Cookie': 'your_cookie_here'
}
response = requests.get('https://example.com', headers=headers)
使用 scrapy 框架设置请求头
# settings.py
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# 或者在spider中动态设置
import scrapy
class MySpider(scrapy.Spider):
name = 'my_spider'
def start_requests(self):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
yield scrapy.Request(url='https://example.com', headers=headers, callback=self.parse)
def parse(self, response):
pass
重要提示
- User-Agent 是最重要的请求头,必须设置
- Referer 可以迷惑服务器,让它认为请求来自合法来源
- Cookie 用于维持登录状态
- Accept-Encoding 如果设置为
gzip, deflate, br,requests会自动解压 - 不要伪造太多请求头,容易被识别
- 注意请求头的顺序,某些服务器可能会检查
获取真实浏览器请求头的方法
使用浏览器开发者工具(F12):
- 打开浏览器开发者工具
- 切换到 Network 标签
- 访问目标网站
- 点击任意请求
- 查看 Request Headers 部分
通过合理设置请求头,可以大大提高爬虫的成功率。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播