1. 程式人生 > >fiddler安裝使用,以及遇到的問題

fiddler安裝使用,以及遇到的問題

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 下載安裝

Filddler安全證書安裝

關閉Fiddler之後,下載並安裝證書。

下載並安裝Fiddler證書生成器。點選開啟連結

設定Fiddler抓HTTPS請求

  • Click Tools > Fiddler Options > HTTPS > Capture HTTPS CONNECTs > Decrypt HTTPS traffic這個時候會彈出一個視窗,直接確定,yes,就好。(一定要彈出那個視窗,不然,後面會有各種問題。)

è¿éåå¾çæè¿°

之後點選Action按鈕中的第一個選項,點選YES,

安裝過程中遇到的問題:

安裝之後,瀏覽器無法訪問:直接報連線不是私密連線,查詢各種方式,最終沒有效果,還是這個問題,重灌,但注意,要把已經存在的fiddler證書也徹底刪除,

也可以嘗試吧本地的Internet選項中進行配置:

最後執行程式碼的時候會產生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()

之後根據:https://blog.csdn.net/qq_33958297/article/details/82291009裡面所說的方式進行嘗試,但是我在我的證書裡面沒有找到fiddler的證書,(我重灌fiddler好多次,過程當中刪除過fiddler的證書,但不知道這次安裝,證書到哪裡了)所以直接從fiddler裡面匯出證書到桌面:Tools>Options>HTTPS>Actions>Ecpert Root Certifiction to DeskTop

修改之後的程式碼,和原來值修改了兩處,其他沒做修改

但是這個換了一個錯誤,我接著查詢,發現直接將verify等於False即可。

原因:

執行程式碼的時候開著代理,改區域網設定之前不管選擇GAEProxy、PAC代理還是取消全域性代理都不行(忘了原來是怎麼設的)。改了以後只要不選GAEProxy就不會報錯。

查了一下發現GAE的侷限性有“GAE出口IP被定義為'開放代理'部分網站遮蔽GAE的IP訪問,或將其視為不信任”。大概是這個原因了,也是自己不懂瞎選造成的。也可能指定headers的User-Agent時,伺服器會重定向到https的網址.因此報出SSL驗證失敗的錯誤