2024年4月13日 星期六

Python 學習筆記 : 網頁擷取 (六) : Chrome 擴充功能 RestMan

今天在讀陳會安老師寫的 "Python 從網路爬蟲到生活應用超實務" 第 4-3 節看到 Chrome 擴充功能 Servistate HTTP Editor 的介紹, 此外掛程式可以讓我們很方便地編輯 headers 送出 GET 與 POST 請求. 但到 Chrome 商店搜尋卻找不到, 官網雖然還在, 但按下載鈕卻出現檔案不存在訊息 : 


雖然網路上似乎還找得到 CRX 安裝檔, 但我在陳老師另一本書 "Python 從初學到生活應用超實務" 的第 11-3 章找到類似的擴充功能 RestMan, 所以就改用此外掛來測試 HTTP 請求, 這在撰寫爬蟲程式前測試目標網站, 或測試 Web API 時非常有用. 另一款類似軟體是 PostMan, 參考 :


RestMan 是一款 Wen API 測試工具, 提供 GUI 介面可以方便地送出 HTTP 請求與檢視回應, 特別是對於 JSON 回應會予以格式化方便閱讀.

安裝 Chrome 擴充功能要先按 Chrome 右上角那三個垂直的點點按鈕, 然後點選 "擴充功能", 再點選 "前往 Chrome 線上應用程式商店" :




在線上商店右上角的搜尋框輸入 "RestMan" 後按 Enter 就可搜尋到此程式, 按一下此項目進入該擴充功能說明網頁, 按 "加到 Chrome" 鈕即安裝完成 :




這時按網址列後面的擴充功能按鈕會出現已安裝的擴充功能選單 : 




按 RestMan 右邊的圖釘按鈕就可以將其固定在工具列上 :



按此 RestMan 鈕會開啟新頁籤載入 RestMan 網頁, 在上面 URL 框輸入 httpbin 網址 :

http://httpbin.org/get   

httpbin 提供 HTTP 請求與回應服務, 它支援所有 HTTP 動詞, 採用 RESTful 方式制定了一套請求規則, 會將客戶端的請求 Echo 回應回去客戶端, 參考 :


所以如果輸入上面的 GET 請求網址, httpbin 會將請求標頭資訊以 JSON 格式回應 :




底下是其回應內容, 回應本體內回傳的是 JSON 資料 :




也可以在網址中附帶參數, 例如 :


回應本體內容為 : 

{
    "args": {
        "a": "1",   
        "b": "2"
    },
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Host": "httpbin.org",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
        "X-Amzn-Trace-Id": "Root=1-661a9571-7ed4415e244b3df3611c5a0e"
    },
    "origin": "218.166.67.66",
    "url": "http://httpbin.org/get?a=1&b=2"
}

可見 httpbin 把請求標頭中的 a, b 兩參數放在 JSON 回應中的 args 參數中傳回來. 

下面改用 POST 方法傳送 JSON 資料給伺服器 : 




請求本體部分選擇 RAW 並輸入 {"a": "1", "b": "2"}, 右下角選 JSON : 




回應如下 :


{
    "args": {},
    "data": "{\"a\": \"1\", \"b\": \"2\"}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Content-Length": "20",
        "Content-Type": "text/plain;charset=UTF-8",
        "Host": "httpbin.org",
        "Origin": "chrome-extension://ihgpcfpkpmdcghlnaofdmjkoemnlijdi",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
        "X-Amzn-Trace-Id": "Root=1-661a97e0-2d34bcfa008b02ba1c127243"
    },
    "json": {
        "a": "1",
        "b": "2"
    },
    "origin": "218.166.67.66",
    "url": "http://httpbin.org/post"
}
 
可見參數是放在 data 與 json 屬性中傳回來. 

參考 :


沒有留言:

張貼留言