解决开启Fiddler后python发送请求显示SSL错误

项目场景:

Fiddler作为常用的抓包软件之一,在网页端抓包和APP抓包时都会有大量的应用场景


问题描述:

开启Fiddler情况下抓包:

import requests

url = "http://www.baidu.com"
headers = {
    'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"
}
response = requests.get(url,headers=headers)
print(response.text)

抓包错误提示:
错误提示
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘www.baidu.com’, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(“bad handshake: Error([(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)])”)))

Fiddler关闭后response返回正常,判定为开启Fiddler开启时产生的错误

原因分析:

在配置fiddler抓包工具的时候大伙应该都知道,fidderl的原理是启用一个IP代理,默认IP地址为127.0.0.1,端口号为8888,使发送和获取到的包都走这个代理来实现抓包效果。
那么问题就简单了,在python中设置一个走这个端口的代理IP,并且指定使用fiddler证书就可以实现抓包了


解决方案:

具体源码如下:

  • 普通爬虫requests中
import requests

url = "http://www.baidu.com"
headers = {
    'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"
}
proxies = {
    "http":"http://127.0.0.1:8888",
    "https":"http://127.0.0.1:8888"
}
response = requests.get(url,headers=headers,proxies=proxies,verify='./FiddlerRoot.cer')
print(response.text)

这个证书怎么来的呢?
internet选项(win10)->内容->证书
在这里插入图片描述

在这里插入图片描述
导出到项目目录,文件名随意,只要在代码中与文件名一致就行

  • scrapy框架中,在middlewares.py中间件中添加如下代码
class RandomProxies(object):
    def process_request(self,request,spider):
        request.meta['proxy'] = "https://127.0.0.1:8888"

最后别忘记在setting.py配置文件中,启用中间件

以上就是全部内容,有帮助的小伙伴可以点个赞,谢谢

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值