# 解決CURL指令在一些頁面無法瀏覽 ###### tags: `雜談`, `curl`, `未完成` 用瀏覽器可正常瀏覽, 但用curl卻無限30X跳轉, 或直接被導去別的網站, 或直接空白沒反應, 或直接50X, 可考慮試試本方法 環境 win10 pro 使用 命令提示字元cmd 或是 批次檔bat ## 缺cookie而無限30X跳轉 :::info 結論: ``` curl -iLk -c %tmp%\cookie.txt -b %tmp%\cookie.txt <網址> ``` ::: 將瀏覽器(我以chrome為例), 刪除該網站所有cookie 並 清除快取 接著打開 開發人員工具 並按下 Ctrl+F5 檢視開發人員工具的網路(Network) 查看跳轉後有什麼差別導致不會無限30X跳轉 ![](https://i.imgur.com/j7FLECb.png) ![](https://i.imgur.com/Qi1vxP8.png) 發現成功瀏覽的那個多一個cookie, 因此認為是缺少cookie的問題導致 所以curl語法要調整一下加入cookie即可。 ## 只取標頭但一直40X :::info 結論: 參數別用大寫I,改用小寫i ::: 只取標頭不須內容,加入大寫I參數後就40X 改用小寫i即可,雖然內容一並出來,但至少正常瀏覽 參數|說明 ---|--- I (大寫)|顯示標頭但==不顯示==網頁內容 i (小寫)|顯示標頭也==顯示==網頁內容 原因還沒查,有人知道原因嗎? ## 使用proxy時避免快取 proxy為了效能一定會啟用快取 若是透過proxy連線出去, 有可能會因為proxy的快取機制一直讀取到舊的資料 從幾小時到幾天不等 如何避免快取? 只要網址不一樣就行, 網址後面給他塞一個亂數即可 在微軟的命聽提示字元裡的亂數是`%RANDOM%` ``` curl -x 59.124.224.180:3128 http://www.tainan.gov.tw/?%RANDOM% ``` 會不會剛好別人也用這個亂碼查詢過了, 導致proxy剛好有快取??? 那就只能用uuid/guid了 但cmd好像沒辦法直接產生uuid/guid 好像只能透過powershell來產生 ``` > powershell -Command "[guid]::NewGuid().ToString()" a8ecb212-ea44-49ae-9b53-7ea0a50bb548 ``` 網路上也有人這麼產生 但有人回應這與法只能產生曾經有的guid,無法產生全新的guid,所以不考慮 ``` > wmic path win32_computersystemproduct get uuid UUID 84A06A2E-92FC-46A9-89A1-D4F0330E6494 ``` 有人知道怎麼合併嗎? 或是改用bat ``` :: 取得guid放到NEWGUID變數中 FOR /F %a IN ('POWERSHELL -COMMAND "$([guid]::NewGuid().ToString())"') DO ( SET NEWGUID=%a ) curl -x 59.124.224.180:3128 http://www.tainan.gov.tw/?%NEWGUID% ```