当前位置: 首页 > news >正文

Python 爬虫入门 Day 6 - 反爬虫应对策略 Headers / Cookies 模拟请求

Python 第二阶段 - 爬虫入门

🎯 今日目标

  • 理解常见反爬虫机制
  • 掌握 Headers / Cookies 设置
  • 学会使用 requests.Session() 保持登录状态
  • 初步体验验证码处理和 User-Agent 伪装

📘 学习内容详解

✅ 1. 常见反爬机制有哪些?
类型说明应对方式
UA 检测拒绝非浏览器请求设置 User-Agent
Referer 检测限定来源页面添加 Referer
Cookies 检测检查登录状态使用 requests.Session()
JavaScript 动态渲染页面数据不在源代码中Selenium / Playwright
滑块验证码图形验证阻止爬虫OCR、打码平台
频率限制 / IP封锁请求频繁导致封禁加延迟 / IP代理池

✅ 2. 设置请求头 headers(模拟浏览器)
headers = {"User-Agent": "Mozilla/5.0","Referer": "https://quotes.toscrape.com"
}
response = requests.get(url, headers=headers)

✅ 3. 使用 requests.Session() 保持会话(模拟登录)
import requestssession = requests.Session()# 第一步:登录表单提交
login_url = "http://httpbin.org/post"  # 示例用
data = {"username": "test", "password": "123456"}
session.post(login_url, data=data)# 第二步:访问登录后的页面
resp = session.get("http://httpbin.org/cookies")
print(resp.text)

多数登录站点都依赖 Cookie、Token,Session 自动帮你管理。


✅ 4. 检查响应状态、调试技巧
res = requests.get(url)
print(res.status_code)
print(res.headers)
print(res.cookies)

💻 今日练习任务

  1. 模拟一个表单登录(可使用 httpbin.org)

  2. 抓取并打印 cookies 信息

  3. 修改 headers 中的 UA,观察服务器响应变化

  4. 尝试添加 referer 和 headers 伪装成浏览器访问 quotes.toscrape.com

    import requests# 创建 Session(用于保持登录状态和 Cookies)
    session = requests.Session()# ========== 1. 模拟一个表单登录(使用 httpbin.org) ==========
    login_url = "https://httpbin.org/post"
    login_data = {"username": "test_user","password": "123456"
    }
    login_response = session.post(login_url, data=login_data)print("=== 模拟登录响应内容 ===")
    print(login_response.json())  # httpbin.org 会原样返回你提交的数据# ========== 2. 抓取并打印 cookies 信息 ==========
    # 先设置一些 Cookies(模拟服务器设置)
    session.cookies.set("sessionid", "abc123456", domain="httpbin.org")# 获取并打印当前 Cookies
    cookies_response = session.get("https://httpbin.org/cookies")
    print("\n=== 当前 Cookies ===")
    print(cookies_response.json())  # 返回 {"cookies": {"sessionid": "..."}}# ========== 3. 修改 headers 中的 User-Agent ==========
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0",
    }
    ua_response = session.get("https://httpbin.org/user-agent", headers=headers)
    print("\n=== 当前 User-Agent ===")
    print(ua_response.json())# ========== 4. 添加 referer 和 UA,伪装访问 quotes.toscrape.com ==========
    quotes_url = "https://quotes.toscrape.com/page/1/"headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/122.0.0.0 Safari/537.36","Referer": "https://www.google.com"
    }
    quotes_response = session.get(quotes_url, headers=headers)print("\n=== 模拟浏览器访问 quotes.toscrape.com 状态码 ===")
    print(quotes_response.status_code)# 如果成功,打印前500个字符(页面 HTML)
    if quotes_response.status_code == 200:print("\n页面前500字符预览:")print(quotes_response.text[:500])
    

🧪 示例:模拟访问 quotes.toscrape.com 登录页

from bs4 import BeautifulSoupsession = requests.Session()
login_page = session.get("https://quotes.toscrape.com/login")
soup = BeautifulSoup(login_page.text, "html.parser")
csrf_token = soup.find("input", {"name": "csrf_token"}).get("value")# 模拟登录
payload = {"username": "test","password": "test","csrf_token": csrf_token
}
response = session.post("https://quotes.toscrape.com/login", data=payload)
print("登录是否成功:", "Logout" in response.text)

✍️ 今日总结

  • 了解了反爬虫的主要手段及对应策略
  • 掌握了 UA、Referer、Cookies 设置技巧
  • 学会使用 requests.Session() 保持登录状态
  • 为后续模拟更复杂登录和 JS 渲染页面打下基础

相关文章:

  • Python词频统计工具全解析
  • FPGA基础 -- Verilog 表达式
  • 麒麟系统安装达梦数据库
  • 【git】git的基础使用一
  • C++---类和对象(中)
  • JSON与XML怎么选?什么情况下会用到 JSON?
  • 408第二季 - 组成原理 - 标志器和加法器
  • ES磁盘使用超限问题:TOO_MANY_REQUESTS disk usage exceeded flood-stage watermark,
  • 【Docker安装PostgreSQL】psql:致命错误: 用户 Password 认证失败
  • Android中Glide.with().load().into() 应付面试源码解析
  • C语言中errno错误码定义及使用
  • 绿色建筑发展新动能:楼宇自控助力实现高效节能减排
  • 2025年- H82-Lc190--322.零钱兑换(动态规划)--Java版
  • 【系统设计【4】】设计一个限流器:从理论到实践的完整解决方案
  • 【FreeRTOS实战】一章速通freertos含扩展MQTT,SD卡,
  • Java + Spring Boot + MyBatis 枚举变量传递给XML映射文件做判断
  • 6.17 note
  • 【AI News | 20250617】每日AI进展
  • JDBC强化关键_009_连接池
  • react 状态改变引发视图频繁更新,怎么优化
  • 武威建设局网站/被逆冬seo课程欺骗了
  • 做网站所用的工具/关键词诊断优化全部关键词
  • 普通电脑怎么做网站服务器吗/日喀则网站seo
  • 郑州网站建设蝶动科技/semir森马
  • 建设工程质量+协会网站/互联网项目推广平台有哪些
  • 泉州做网站优化/seo草根博客