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代理如何使用,了解其原理就可以了。

参考:https://www.cnblogs.com/taostaryu/p/10547132.html

『居善地』接口测试 — 7、Requests库使用proxies代理发送请求的更多相关文章

  1. 『居善地』接口测试 — 3、Requests库介绍

    目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...

  2. 『居善地』接口测试 — 4、Requests库发送GET请求

    目录 1.使用Requests库发送带参数的GET请求 2.查看GET请求的内容 3.带请求头.参数的Get请求 Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求. ...

  3. 『居善地』接口测试 — 5、使用Requests库发送POST请求

    目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...

  4. 『居善地』接口测试 — 6、Httpbin服务介绍

    目录 1.Httpbin服务介绍 2.在Windows系统中部署Httpbin服务 3.在Linux系统中部署Httpbin服务 4.Httpbin访问方式 5.Httpbin常用调试接口 6.总结: ...

  5. 『居善地』接口测试 — 13、Moco框架的使用

    目录 1.Moco框架第一个练习 2.Get方法的Mock实现 3.Post方法的Mock实现 4.请求中加入Cookies 5.请求中加入Header 6.Moco模拟重定向 7.综合练习 8.总结 ...

  6. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  7. 『居善地』接口测试 — 11、接口签名sign原理

    目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...

  8. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  9. 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解

    目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...

随机推荐

  1. Mediapipe 在RK3399PRO上的初探(二)(自定义Calculator)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  2. k8s集群移除node

    先drain节点上的pod 使用kubectl drain node03 --delete-local-data --force --ignore-daemonsets 之后删除node [root@ ...

  3. Windows远程时无法复制文件--杀进程rdpclip.exe,然后再启动

    1.远程登陆到主机上 2.任务管理器杀进程rdpclip.exe 3.[开始],搜索rdpclip.exe,点击运行 此时重新复制文件,可以跨主机复制啦 原以为是公司网络限制,现在看来还是没那么先进嘛

  4. 手机改 user模式为debug模式

    logcat 是Android中一个命令行工具,可用于监控手机应用程序的log信息.网上相关的教学很多,这里只想把自己折腾 2 部手机(一个是三星S4 I9500 港水,Android 5.01,一个 ...

  5. Linux启动流程和服务管理(init和systemd)

    目录 一:Linux启动流程 init和Systemd的区别 二:Linux服务管理(service,systemctl) 一:Linux启动流程 Rhel6启动过程: Rhel7启动过程: GRUB ...

  6. Windows下包管理工具Bower的安装和使用

    目录 安装Bower Bower的使用 安装Bower Windows下安装Bower之前,先安装好 nodejs 和 msysgit 环境 然后我们就可以使用npm包管理工具下载并全局安装bower ...

  7. Portswigger web security academy:Cross-origin resource sharing (CORS)

    Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...

  8. 【axios】get/post请求params/data传参总结

    axios中get/post请求方式 1. 前言 最近突然发现post请求可以使用params方式传值,然后想总结一下其中的用法. 2.1 分类 get请求中没有data传值方式 2.2 get请求 ...

  9. LeetCode---84. 柱状图中最大的矩形(hard)

    题目:84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 示例: 输入: [2,1,5 ...

  10. 二、postman断言及正则表达式取值

    postman老式断言与新式断言总结:本文以微信开发者文档为例 断言处如图所示 一.老式断言 老式断言总结:var variables相当于代码中定义的变量,test['']=true;相当于pyth ...