【requests深入】发送post请求、使用代理以及cookie和session简介

发送POST请求

哪些地方我们会遇到POST请求:

  1. 登录注册(post比get安全)
  2. 需要传输大文本的时候(POST请求对数据长度没有要求)
    爬虫也需要在这两个地⽅模拟浏览器发送post请求。
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
data = {
	'from':'en',
	'to':'zh',
	'query':'hello',
	'transtype': realtime',
	'simple_means_flag': 3',
	'sign': '679849.965784',
}
post_url = 'https://xxx.com'
r = requests.post(post_url,data=post_data,headers=headers)
print(r.txex) 

使用代理

问题:为什么爬⾍需要使⽤代理

  1. 让服务器以为不是同⼀个客户端在请求
  2. 防⽌我们的真实地址被泄露,防⽌被追究
    使用代理
    proxies = {
    ‘http’:‘http://12.34.56.79:9527’,
    ‘https’:‘http://12.34.56.79:9527’
    }
    用法:
requests.get('http://www.baidu.com',proxies = proxies)

案例:

import requests
proxies = {'http':'http://117.191.11.112'}
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
r = requests.get('http://www.baidu.com',proxies = proxies,headers = headers}
print(r.status_code)

怎样使用代理IP
准备⼀堆的IP地址,组成IP池,随机选择⼀个IP来⽤
检查IP的可⽤性
1.可以使⽤requests检查
2.在线代理IP质量检查的⽹站

cookie和session区别

  1. cookie数据存放在客户端的浏览器上,session数据放在服务器上。
  2. cookie不是很安全,别⼈可以分析存放在本地的cookie并进⾏cookie欺骗。
  3. session会在⼀定时间内保存在服务器上。当访问增多,会⽐较占⽤你服务器的性能。
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制⼀个站点最多保存20个cookie。

爬虫处理cookie和session

带上cookie、session的好处:能够请求到登录之后的页面。
带上cookie、session的弊端:⼀套cookie和session往往和⼀个⽤户对应请求太多,请求次数太多,容易被服务器识别为爬⾍。
不需要cookie的时候尽量不去使⽤cookie
但是为了获取登录之后的⻚⾯,我们必须发送带有cookies的请求
requests提供了⼀个叫做session类,来实现客户端和服务端的会话保持。

使用方法

  1. 实例化session
  2. 先使⽤session发送请求,登录对应⽹站,把cookie保持在session中
  3. 在使⽤session请求登录之后才能访问的⽹站,session能够⾃动携带登录成功时保存在其中的cookie,进⾏请求。
import requests
session = requests.session()
post_url = "******.com"
post_data = {'email':'----@qq.com','password':''} 
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
# 使⽤session发送post请求,cookie保存在其中 
session.post(post_url,data=post_data,headers=headers)
# 使⽤session进程请求登录之后才能访问的地址
response = session.get('.......', headers=header)
with open('renren.html', 'w', encoding='utf-8') as f:
    f.write(response.text)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python + requests 接口测试中,获取 CookieSession 的方式主要有两种:手动获取和自动获取。 手动获取 CookieSession: 1. 首先通过浏览器登录接口系统,获取到 CookieSession。 2. 打开浏览器的开发者工具,找到请求头中的 CookieSession。 3. 将 CookieSession 复制下来,保存为变量或者放在 headers 中。 自动获取 CookieSession: 1. 安装 requests 库和 requests.cookies 库。 2. 使用 requests.session() 创建一个 session 对象。 3. 在 session 对象中发送请求session 对象会自动保存 CookieSession。 4. 在后续的请求中,使用 session 对象发送请求,可以自动携带 CookieSession使用 CookieSession: 1. 将 CookieSession 放在 headers 中。 2. 使用 requests.get() 或 requests.post() 发送请求时,将 headers 作为参数传入。 示例代码: 手动获取 CookieSession: ```python import requests # 手动获取 CookieSession cookie = "xxx" session = "xxx" headers = { "Cookie": cookie, "Session": session, "Content-Type": "application/json" } # 发送请求 response = requests.post(url, headers=headers, data=data) ``` 自动获取 CookieSession: ```python import requests # 自动获取 CookieSession session = requests.session() # 登录 login_data = {"username": "xxx", "password": "xxx"} session.post(login_url, data=login_data) # 发送请求 response = session.post(url, data=data) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值