簡體   English   中英

php curl -k或--insecure,-X

[英]php curl -k or --insecure, -X

使用PHP和curl,我需要通過代理連接到SSL安全站點,並忽略證書警告。 我的curl命令行如下所示:

curl -k -u username:password -X GET https://someURL

通過curl.php,我看到我認為正確的選項設置。 有了它們,我最終會得到這樣的結論:

  $ch = curl_init("https://someURL");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors?
  curl_setopt($ch, CURLOPT_PROXY, true);           // Proxy true?
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");     
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);            
  curl_setopt($ch, CURLOPT_USERPWD, "username:password");      
  $result = curl_exec($ch);

但是,$ result總是返回false。 我的密碼中有一個特殊的字符,“!”。 也許我需要逃避它? 除此之外,還有其他想法嗎?

要完全禁用ssl證書檢查curl知道選項CURLOPT_SSL_VERIFYPEER 如果設置為false certifcate,則將禁用檢查。 由於默認值為true ,您必須添加:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

PHP文檔

CURLOPT_SSL_VERIFYPEER FALSE阻止cURL驗證對等方的證書。 可以使用CURLOPT_CAINFO選項指定要驗證的備用證書,也可以使用CURLOPT_CAPATH選項指定證書目錄。 默認情況下,從cURL 7.10開始為TRUE。 從cURL 7.10開始安裝的默認包。

請注意,如果禁用證書檢查,則可以省略CURLOPT_SSL_VERIFYHOST設置。 因此可以刪除以下行:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

您還詢問以下設置是否正常:

curl_setopt($ch, CURLOPT_PROXY, true);

PHP文檔

通過隧道請求的HTTP代理。

表示如果您使用代理,它接受代理地址,如'192.168.0.1:3128'。 在這種情況下, true無意義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM