2017-05-19 10 views
0

単純なファイルダウンロードテスト。働いていない。プロバイビーは会社の代理人のため。プロキシを設定するにはどうしたらいいですか? "127.0.0.1:8080"を追加する前に、私はいつもエラー7を受け取りました:サーバーに接続できませんでした。今ではいつもリターンコード0が返ってきますが、テストファイルjson.txtには404しか含まれていません。しかし、私のブラウザでは明らかにURLが働いています。私もthis経由でシステムからプロキシ設定を取得しようとしましたが、失敗しました。インターネットの設定がプロキシを検出するwpad.datファイルを使用するように設定されているプロキシの背後にあるcURL 404

CURL *curl; 
FILE *fp; 
char url[] = "http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes&year=2010&sold_in_us=1"; 
char outfilename[FILENAME_MAX] = "C:\\temp\\json.txt"; 
curl = curl_easy_init(); 
if (curl) { 
    fp = fopen(outfilename,"wb"); 

    CURLcode res; 
    curl_easy_setopt(curl, CURLOPT_URL, url); 
    curl_easy_setopt(curl, CURLOPT_NOBODY, true); 
    curl_easy_setopt(curl, CURLOPT_HEADER, true); 
    curl_easy_setopt(curl, CURLOPT_HTTPGET, true); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); 
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(curl, CURLOPT_PROXY, "127.0.0.1:8080"); 

    res = curl_easy_perform(curl); 
    cout << "Curl response code " << res << ": " << curl_easy_strerror(res) << endl; 

    curl_easy_cleanup(curl); 

    fclose(fp); 
} 

UPDATE:

HTTP/1.1 404 Not Found 
Connection: Keep-Alive 
Server: Embedthis-http 
ETag: "0-0-56d6b6ea" 
Cache-Control: no-cache 
Last-Modified: Wed, 02 Mar 2016 09:48:26 GMT 
Date: Fri, 19 May 2017 14:33:57 GMT 
Content-Length: 167 
Keep-Alive: timeout=60, max=199 

<!DOCTYPE html> 
<html><head><title>Not Found</title></head> 
<body> 
<h2>Access Error: 404 -- Not Found</h2> 
<pre>Cannot locate document: /</pre> 
</body> 
</html> 

は、ここに私のcURLの試みです。そのうちの1つを入力すると、サーバーからの応答が返ってくるが、Webサイトがブロックされているためアクセスが拒否されたという。しかし私のブラウザはこのサイトを表示することができます。

逆に、netsh.exe winhttp show proxyと入力すると、現在のwinhttpプロキシ設定は「直接アクセス(プロキシサーバーなし)」と表示されます。

UPDATE私は最終的にそれがそれらのオプションで作業しまった2

:より有用出力を得るためにVerboseを使用します。出力はnegotiatentlmのようないくつかのauthメソッドを示しました。 ntlmオプションは機能しませんでしたが、negotiateと、システムから資格情報を取得するユーザコード:(libcurlにsspiモジュールがある場合)があります。

curl_easy_setopt(curl, CURLOPT_URL, url); 
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); 
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(curl, CURLOPT_HEADER, 1); 
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_easy_setopt(curl, CURLOPT_PROXY, <"host:port">); 
    curl_easy_setopt(curl, CURLOPT_PROXYAUTH, CURLAUTH_NEGOTIATE); 
    curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, ":"); 

答えて

0

ユーザーエージェントを試して、ヘッダーを定義してください。

#define HEADER_ACCEPT "Accept:text/html,application/xhtml+xml,application/xml" 
#define HEADER_USER_AGENT "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.70 Safari/537.17" 

struct curl_slist *list = NULL; 
list = curl_slist_append(list, HEADER_USER_AGENT); 
list = curl_slist_append(list, HEADER_ACCEPT); 
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); 

あなたは、本当のプロキシを必要とするプロキシのサイトを見つけて、それはまだ動作していない別のIP

+0

で再試行することができます。 – user2366975

関連する問題