『居善地』接口测试 — 7、Requests库使用proxies代理发送请求
1、代理的了解

在上图中我们可以把Web server看成是Google服务器,正常情况下在国内是无法访问Google服务器的,这个时候就需要使用代理软件,帮助我们发送请求来访问Google服务器。然后再通过代理软件把Google服务器响应的结果返回给我们的浏览器,这个代理软件就起到了一个代理的作用,帮助我们发送请求,帮助我们接收响应。
2、代理的分类

正常情况下,我们使用浏览器来访问百度服务器,可以正常的直接的进行访问。
(1)正向代理
正向代理类似一个跳板机,代理访问外部资源。
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,将请求发到代理服务器,代理服务器能够访问谷歌,这样由代理取到谷歌服务器返回的数据,再返回给我们,这样我们就能访问谷歌了。

(2)反向代理
反向代理(Reverse Proxy)实际运行方式是指,以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果,返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

(3)总结
- 正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端。
- 反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端。

形象的描述:
- 正向代理: 找黄牛买票。
- 反向代理: 租房的中介。
3、Requests库使用代理
只需要添加proxies参数即可,接收字典格式的参数。
示例:
# 1.导入requests库
import requests
# 明确要访问的url地址
url = "https://ip.tool.chinaz.com/"
# 明确请求头信息
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
}
# 设置代理服务器地址
# 如果发送的是http请求,就使用http请求的代理,如果发送的是https请求,就使用一个https请求的代理。
proxies = {"https": "https://58.220.95.86:9401", "http": "http://113.214.13.1:1080"}
# 发送请求
response = requests.get(url=url, headers=headers, proxies=proxies)
# 查看响应结果的状态码
print(response.status_code)
# 获得响应结果的源码
print(response.text)
说明一下:
访问
url = "https://ip.tool.chinaz.com/"这个地址的并不是我们自己的IP地址,而是proxies属性中定义的IP地址。实际上我们把请求发送给代理服务器,代理服务器帮我们访问了上面的网址。
验证一下:
https://ip.tool.chinaz.com/是一个检查IP地址的网站。- 通过执行上面的示例,看看
response.text返回的请求源码中的IP地址信息。
在返回的源码中,是可以定位到如下信息的,证明我们上面使用的代理成功了。<div class="WhwtdWrap bor-b1s col-gray03" style="height:auto">
<span class="Whwtdhalf w15-0 lh45">58.220.95.86</span>
<span class="Whwtdhalf w15-0 lh45" style="cursor:pointer;" onclick="AiWenIpData('58.220.95.86')">58.220.95.86</span>
<span class="Whwtdhalf w15-0 lh45">987520854</span>
<span class="Whwtdhalf w30-0 lh24 tl ml80">
<p>江苏省扬州市电信</p>
</span>
</div>
- 寻找代理服务器请参考:
https://proxy.mimvp.com/freeopen。
4、总结
为什么需要使用代理?
- 让服务器以为不是同一个客户端在请求。
- 防止我们的真实地址被泄露。
这里我们就知道Requests库中
proxies代理如何使用,了解其原理就可以了。
『居善地』接口测试 — 7、Requests库使用proxies代理发送请求的更多相关文章
- 『居善地』接口测试 — 3、Requests库介绍
目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...
- 『居善地』接口测试 — 4、Requests库发送GET请求
目录 1.使用Requests库发送带参数的GET请求 2.查看GET请求的内容 3.带请求头.参数的Get请求 Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求. ...
- 『居善地』接口测试 — 5、使用Requests库发送POST请求
目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...
- 『居善地』接口测试 — 6、Httpbin服务介绍
目录 1.Httpbin服务介绍 2.在Windows系统中部署Httpbin服务 3.在Linux系统中部署Httpbin服务 4.Httpbin访问方式 5.Httpbin常用调试接口 6.总结: ...
- 『居善地』接口测试 — 13、Moco框架的使用
目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...
- 『居善地』接口测试 — 12、Moco框架介绍
目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...
- 『居善地』接口测试 — 11、接口签名sign原理
目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解
目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...
随机推荐
- JAVAEE_Servlet_21_Cookie
Cookie * Cookie 是什么? - Cookie翻译过来是曲奇饼干的意思 - Cookie可以保存回话状态,但是这个会话状态是保存在客户端上的,只要清除Cookie,或者 Cookie失效, ...
- React函数式组件的性能优化
优化思路 主要优化的方向有2个: 减少重新 render 的次数.因为在 React 里最重(花时间最长)的一块就是 reconction(简单的可以理解为 diff),如果不 render,就不会 ...
- Azure CDN 为静态网站创建内容分发网络
一,引言 最近刚刚接触 Edi.Wang 的 Moonglade 博客系统,正好这套系统中有使用到 Azure CND (内容分发网络),那就学习学习.那么今天就尝试利用 Azure CDN 来发布静 ...
- Python 元编程 - 装饰器
Python 中提供了一个叫装饰器的特性,用于在不改变原始对象的情况下,增加新功能或行为. 这也属于 Python "元编程" 的一部分,在编译时一个对象去试图修改另一个对象的信息 ...
- Redis系统学习之事物
Redis事物操作 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败, ...
- 「编程羽录」上线,程序员必备的这些技能你能get到嘛?
大家好,我是小羽. 好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章. 会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识,做到全 ...
- ubuntu 14.04.5 编译Android 4.4.4 r1源码(最新)
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/54426189 吐槽:ubuntu系统真是让人又爱又恨,也有可能是VMware Wo ...
- hdu2371 矩阵乘法(求序列位置改变m次后的序列)
题意: 给你一个字符串,然后让你执行m次操作,每次操作把当前的字符串映射到他给你的位置序列的位置,比如给的是 3 1 2,第一步就是把原来的3的位置的字母变到1的位置,1的变到2的位置,2 ...
- Linux提权—脏牛漏洞(CVE-2016-5195)
目录 脏牛漏洞 exp1复现: exp2复现: 脏牛漏洞 脏牛漏洞,又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞.Linux ...
- MySQL的Double Write并不难理解
目录 问题引入- 断电了 不一会 - 来电了 Double write工作流程 恢复的过程 配置参数 疑问 推荐阅读 问题引入- 断电了 今天为大家介绍一个新的名词:double write. 相信你 ...