fiddler安装使用,以及遇到的问题

时间:2024-03-28 13:51:59

Fiddler是什么?

Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。

Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。你对HTTP 协议越了解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。

Fiddler的工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

Fiddler 下载安装

官网下载地址:http://www.telerik.com/fiddler
下载到本地,然后安装正常的安装流程执行。

Filddler安全证书安装

关闭Fiddler之后,下载并安装证书。

下载并安装Fiddler证书生成器。点击打开链接

设置Fiddler抓HTTPS请求

  • Click Tools > Fiddler Options > HTTPS > Capture HTTPS CONNECTs > Decrypt HTTPS traffic这个时候会弹出一个窗口,直接确定,yes,就好。(一定要弹出那个窗口,不然,后面会有各种问题。)

fiddler安装使用,以及遇到的问题

fiddler安装使用,以及遇到的问题

之后点击Action按钮中的第一个选项,点击YES,

安装过程中遇到的问题:

安装之后,浏览器无法访问:直接报连接不是私密连接,查询各种方式,最终没有效果,还是这个问题,重装,但注意,要把已经存在的fiddler证书也彻底删除,

fiddler安装使用,以及遇到的问题

fiddler安装使用,以及遇到的问题

也可以尝试吧本地的Internet选项中进行配置:

fiddler安装使用,以及遇到的问题

最后运行代码的时候会产生SSLError的错误(关闭fiddler,运行正常,打开fiddler报错),代码及其错误如下:

# coding:utf-8
import requests
import re
import time
import random
# import json
import os
import getpass
import prettytable as pt

user_agent_list = [
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
    "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]

stations = []

session = requests.session()

def get_header():
    agent = user_agent_list[random.randint(0, len(user_agent_list) - 1)]
    header = {
        "User-Agent": agent,
        "Accept": "*/*",
        "Accept - Encoding": "gzip,deflate,br",
        "Accept - Language": "zh-CN,zh;",
        "q": "0.9",
        "Cache - Control": "no-cache",
        "Connection": "keep-alive",
        "Host": "kyfw.12306.cn",
        "Origin": "https://kyfw.12306.cn"
    }

    return header


def get_station():
    station_url = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js"
    response = session.get(station_url, headers=get_header())
    stations_all = re.findall(u'([\u4e00-\u95fa5]+)\|([A-Z]+)', response.text)
    global stations
    stations = dict(stations_all)
    print(stations)


get_station()

fiddler安装使用,以及遇到的问题

之后根据:https://blog.csdn.net/qq_33958297/article/details/82291009里面所说的方式进行尝试,但是我在我的证书里面没有找到fiddler的证书,(我重装fiddler好多次,过程当中删除过fiddler的证书,但不知道这次安装,证书到哪里了)所以直接从fiddler里面导出证书到桌面:Tools>Options>HTTPS>Actions>Ecpert Root Certifiction to DeskTop

修改之后的代码,和原来值修改了两处,其他没做修改

fiddler安装使用,以及遇到的问题

但是这个换了一个错误,我接着查找,发现直接将verify等于False即可。

原因:

运行代码的时候开着代理,改局域网设置之前不管选择GAEProxy、PAC代理还是取消全局代理都不行(忘了原来是怎么设的)。改了以后只要不选GAEProxy就不会报错。

查了一下发现GAE的局限性有“GAE出口IP被定义为'开放代理'部分网站屏蔽GAE的IP访问,或将其视为不信任”。大概是这个原因了,也是自己不懂瞎选造成的。也可能指定headers的User-Agent时,服务器会重定向到https的网址.因此报出SSL验证失败的错误