2013-03-11 80 views
3

特別是,我試圖複製firefox的行爲,當我將其設置爲使用https通信的代理。如何使用curl通過代理模擬Firefox的請求?

從我的測試看來,Firefox向代理髮送CONNECT請求,而下面的curl命令直接發送GET到代理。

curl --proxy-basic mydomain.com:8001 https://www.google.com 

如何使curl像HTTPS連接代理的測試目的一樣行爲?

編輯1:問題不在用戶代理,因爲我不想欺騙代理思考我是Firefox,只是爲了幫助代理功能的方式與Firefox。

+0

用戶代理仍然通過代理髮送到服務器,所以服務器仍然會將您視爲不是Firefox,除非您將自己顯示爲Firefox。 – 2013-03-11 08:54:46

回答

0

使用CURLOPT_USERAGENT選項代理設置爲火狐

例如參照 The CURL User Agent

用於處理SSL部分看看這個例子 http://curl.haxx.se/libcurl/c/https.html

,最好的辦法去了解它,以便採取一個捕獲在以太真實,然後設置相應的頭字段使用CURLOPT_ *

+0

我不認爲這只是USERAGENT問題。我更擔心缺少'CONNECT'。 – merlin2011 2013-03-11 08:02:42

+0

如果您通過http代理執行HTTPS,那麼您已經在執行CONNECT ... – 2013-03-11 08:55:29

+0

@DanielStenberg,但代理服務器沒有看到CONNECT,但使用了我在該問題中提供的命令。 – merlin2011 2013-03-11 09:06:35

2

我已經通過Firebug

一旦你安裝Firebug的,按照此步驟:

  1. 右鍵單擊的Firefox網頁,選擇此選項:

enter image description here

  • 選擇Net標籤
  • enter image description here

  • 刷新頁面

  • 右鍵單擊您要模擬的URL請求

  • 選擇copy as cURL

  • enter image description here

    1. 您想要模擬的URL請求現在位於剪貼板中。
    1

    你必須指定代理,否則事情將無法正常工作,不喜歡:

    1. curl -x 127.0.0.1:8888 "httpS://www.example.com/" - 請確保您嘗試連接throught HTTPS,否則簡單的GET將被髮送。
    2. curl -p -x 127.0.0.1:8888 "http://www.example.com/" - 即使使用普通的HTTP資源,該功能也可以正常工作。

    很難找到任何已經存在的話題,除此之外,所以也許我正在回答已經回答的問題。