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

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 去请求。

(二)工作流程(对应图文 )

  1. 客户端(你写的爬虫)→ 发 URL 请求给代理服务器 。
  2. 代理服务器 → 转发请求给目标服务器 。
  3. 目标服务器 → 把响应给代理服务器 。
  4. 代理服务器 → 再把响应回传给客户端 。
    相当于代理 “替你” 和目标服务器沟通,隐藏真实 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 !

 

http://www.lryc.cn/news/591314.html

相关文章:

  • HTML前端性能优化完整指南
  • LeetCode 234:回文链表
  • Day04_C语言网络编程20250716_sql语言大全
  • Ollama使用指南-更改默认安装路径和Model路径(安装到非C盘)
  • 【计算机网络】第四章:网络层(上)
  • 【Linux-云原生-笔记】LVS(Linux virual server)相关
  • 云原生环境下的安全控制框架设计
  • MongoDB社区版安装(windows)
  • mongodb 入门级别操作
  • 如何清除 npm 缓存
  • Redis3:Redis数据结构与命令全解析
  • MongoDB 安装步骤详解
  • AI交互的初期魅力与后期维护挑战
  • RISC-V和ARM有何区别?
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1
  • Flutter状态管理篇之ChangeNotifier(一)
  • 深度学习之神经网络(二)
  • Flutter基础(前端教程①②-序列帧动画)
  • Oracle数据泵详解——让数据迁移像“点外卖”一样简单​
  • 如何查询pg账号权限 能否创建模式 删表建表
  • xss防御策略
  • 从 0 到 1 玩转 XSS - haozi 靶场:环境搭建 + 全关卡漏洞解析
  • OpenCV中VideoCapture 设置和获取摄像头参数和Qt设计UI控制界面详解代码示例
  • 用Python实现神经网络(二)
  • 前端0知识docker临危之被迫弄docker教程
  • NumPy, SciPy 之间的区别
  • ota之.加密算法,mcu加密方式
  • 量化环节:Cont‘d
  • C++网络编程 6.I/0多路复用-epoll详解
  • 现在遇到一个问题 要使用jmeter进行压测 jmeter中存在jar包 我们还要使用linux进行发压,这个jar包怎么设计使用