Python 网络爬虫 —— 代理服务器
一、会话(Session)
(一)核心逻辑
HTTP 本身无记忆,每次请求独立。会话(Session) 就是为解决这问题,让客户端(浏览器)和服务器 “记住” 交互状态(比如登录态 ),常用 Cookie
实现:服务器发 Cookie
给客户端存着,下次请求带着,服务器就知道 “是同一用户” 。
(二)创建会话(requests 实现 )
用 requests
库的 Session
类,自动维持会话、管理 Cookie
,代码形式:
import requests
# 创建会话对象,后续用 s 发请求,自动带 Cookie
s = requests.Session()
比如登录操作,先用 s.post()
提交账号密码,登录后的 Cookie
会存在 s
里,再用 s.get()
访问需要登录的页面,就自动带着登录态,不用手动传 Cookie
。
二、代理服务器
(一)是什么 & 作用
代理服务器是客户端和目标服务器中间的 “中转站” 。客户端发请求给代理,代理再转发给目标服务器,拿到响应后再回传给客户端。
作用超关键:
- 防封禁:频繁爬取时,目标服务器会封客户端 IP ,用代理换 IP ,让服务器以为是不同用户请求。
- 突破限制:有些资源限制访问来源,代理可伪装成允许的 IP 去请求。
(二)工作流程(对应图文 )
- 客户端(你写的爬虫)→ 发 URL 请求给代理服务器 。
- 代理服务器 → 转发请求给目标服务器 。
- 目标服务器 → 把响应给代理服务器 。
- 代理服务器 → 再把响应回传给客户端 。
相当于代理 “替你” 和目标服务器沟通,隐藏真实 IP 。
(三)使用方法(requests 代码 )
在 get()
/post()
里加 proxies
参数,传代理的 IP 等信息,代码形式:
import requests
# 构造代理字典,http/https 按需选,值是代理地址(IP:端口 )
proxy = {'http': '代理服务器地址:端口'}
# 请求时传 proxies,走代理访问目标网址
r = requests.get('https://www.xxx.com/', proxies=proxy)
print(r.text)
比如代理地址是 115.29.199.168:1188
,就写成 proxy = {'http': '115.29.199.168:1188'}
,请求时带着它,数据就会走代理服务器转发 。
注意:免费代理有时效性,可能用着用着就失效,实际项目常用付费、稳定的代理~
这样,会话维持(靠 Session
自动管 Cookie
)和代理服务器(当 “中转站” 防封禁 )的核心就讲清楚啦,代码怎么写、作用是啥,都能快速 get !