由于在测试服务器上测试东西都是https,然后最近又在和大神一起开发openapi,api写好当然是要测试的

python上测试接口最好用的莫过于requests模块了。但是 我还从来没有用requests模块过ssl 在网上找了一些资料看到说的是,使用一个urllib3的模块。

好吧进入正题。

r = requests.post(url, data=payload, proxies=proxies, verify=True)

这行代码 增加了两个平时不怎么用得上的字段。 proxies 和 verify 。 proxies 一会儿介绍 verify 是requests包是对目标网站启用证书验证的选项。这里

摘抄文档里的相关内容。

SSL Cert Verification
Requests can verify SSL certificates for HTTPS requests, just like a web browser. To check a host’s SSL certificate, you can use the verify argument: >>> requests.get('https://kennethreitz.com', verify=True)
requests.exceptions.SSLError: hostname 'kennethreitz.com' doesn't match either of '*.herokuapp.com', 'herokuapp.com'
I don’t have SSL setup on this domain, so it fails. Excellent. GitHub does though: >>> requests.get('https://github.com', verify=True)
<Response [200]>
You can pass verify the path to a CA_BUNDLE file or directory with certificates of trusted CAs: >>> requests.get('https://github.com', verify='/path/to/certfile')
This list of trusted CAs can also be specified through the REQUESTS_CA_BUNDLE environment variable. Requests can also ignore verifying the SSL certificate if you set verify to False. >>> requests.get('https://kennethreitz.com', verify=False)
<Response [200]>
By default, verify is set to True. Option verify only applies to host certs. You can also specify a local cert to use as client side certificate, as a single file (containing the private key and the certificate) or as a tuple of both file’s path: >>> requests.get('https://kennethreitz.com', cert=('/path/server.crt', '/path/key'))
<Response [200]>
If you specify a wrong path or an invalid cert: >>> requests.get('https://kennethreitz.com', cert='/wrong_path/server.pem')
SSLError: [Errno 336265225] _ssl.c:347: error:140B0009:SSL routines:SSL_CTX_

官网提供了这些用法使用 里面包括在 电脑上已经安装了受信证书,直接使用verify=True进行设置 就能正常访问ssl 以及没有安装相应证书 需要对该字段进行路径指定。以及直接将verify=False 不进行校验。

这里由于我的电脑上是有公司的测试服务器证书的,所以要进行ssl校验只需要将verify字段置为True就可以正常请求和访问了。这里有个问题要特别注意一下,也是我遇到的问题,因为当时我使用requests这个包比较早。所以当时pip install下载的还是一个1.x的版本,这个版本的ssl校验就有点问题。建议大家在使用之前先将模块更新到最新的版本再进行操作。避免不必要的错误。

好了 到了这里还没完,由于api请求最大的问题就是调试。所以抓包当然是必不可少。在更新了新版的requests之后,charles是没有办法抓到requests包的。他就着么莫名其妙从charles的监听下面溜走了。 这里就需要设置requests的代理,将http 和https的代理字段都指向charles的代理地址 默认是 本地的8888端口 然后将这个字段传给proxies  

proxies = {
"http": "localhost:8888",
"https": "localhost:8888",
}

就可以正常请求了! 这里要抓去https的包 还需要配置charles证书 就不在这里介绍了。 可能有时间再单独开一篇来写。

关于python requests 包跑ssl的设置 和 charles相关抓包的问题的更多相关文章

  1. 【答疑解惑】为什么你的 Charles 会抓包失败?

    作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...

  2. Charles 手机抓包

    Charles 手机抓包 请求抓包对于程序员调试代码必不可少,Charles是一个用与抓包的好工具(也可以使用Fiddler),Charles抓包是通过中间人代理实现,在客户端和服务端通信时,Char ...

  3. vue-cli建立的项目如何在手机端运行以及如何用charles来抓包

    刚开始自己在config文件夹下的index.js中的dev下的host写成的是localhost,但是发现自己不能在手机端访问,并且也不可以在charles进行抓包处理,后来把localhost改成 ...

  4. Mac上安装Charles进行抓包全流程设置

    安装 -- 官网下载最新版的Charles版本,按照提示安装即可 破解 -- https://blog.csdn.net/qq_25821067/article/details/79848589. M ...

  5. Python爬虫-02:HTTPS请求与响应,以及抓包工具Fiddler的使用

    目录 1. HTTP和HTTPS 1.1. HTTP的请求和响应流程:打开一个网页的过程 1.2. URL 2. 客户端HTTP请求 3. Fiddler抓包工具的使用 3.1. 工作原理 3.2. ...

  6. Charles 手机抓包HTTPS设置以及证书安装

    本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...

  7. charles 手机抓包设置

    本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...

  8. 抓包工具Fidder设置(移动端抓包)

    1.下载安装fiddler,下载链接:http://fiddler2.com/get-fiddler(我用的是免安装的fiddler2) 2.设置fiddler 打开Fiddler,     Tool ...

  9. Charles手机抓包设置&无法打开火狐网页设置

    1. Charles抓取手机上的网络包,需要安装证书(Charles的和手机的) 操作方法: https://blog.csdn.net/lea__dongyang/article/details/7 ...

随机推荐

  1. day15 Python函数递归,轻易不要用递归,容易搞出来内存溢出

    古之欲明明德于天下者,先治其国:欲治其国者,先齐其家:欲齐其家者,先修其身:欲修其身者,先正其心:欲正其心者,先诚其意:欲诚其意者,先致其知,致知在格物.物格而后知至,知至而后意诚,意诚而后心正,心正 ...

  2. 深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)

    文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章 ...

  3. 'style-loader', 'css-loader'使用

    'style-loader', 'css-loader'使用 1.安装 npm install style-loader css-loader --save-dev 2.配置 webpack.conf ...

  4. ASP.NET 文件操作类

    1.读取文件 2.写入文件 using System; using System.Collections.Generic; using System.IO; using System.Linq; us ...

  5. Android 百度sdk5.0定位

    在开发中可能 会用到诸如“定位出当前所在城市,所在位置的经纬度”等功能.一次性的定位肯能定位不成功,可能经纬度未读出来,也可能是地址信息或者城市信息未读出来.此时就需对定位后拿到的信息做判断,加入没有 ...

  6. 动手动脑(lesson 3)

    一· 答:本质上一样,但在内存分配时有区别.如下图: 二· 程序运行结果截图: 答案截图: 三· 四· 答:构造函数与参数个数不匹配. 五· 运行结果截图: 总结:所有类的变量都默认初始化为null, ...

  7. kubernetes 持久化部署lamp类型网站

    1.构建mariadb的镜像 cat Dockerfile FROM mariadb:latest ADD twocloud_kk.sql /docker-entrypoint-initdb.d #C ...

  8. OSC Source Code Innovation Salon(2018.10.20)

    时间:2018.10.20地点:北京 朝阳 浦项中心B座2层

  9. Rabbitmq-direct演示

    在上一节中我们创建了一个日志系统.实现将日志消息广播给所有的cusumer. 在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息.比如:我们可以直接将关键的错误类型日志消息保存到日志文件中 ...

  10. HNOI2018简要题解

    HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...