最近、自分のプロジェクトの 1 つで libcurl.net をHttpWebRequest
およびHttpWebResponse
クラスの代わりに使用し始めました。マネージ クラスの代わりに libcurl.net を使用することにした理由は、libcurl.net が PHP の cURL の動作を模倣し、PHP から一部のコードを移植していたためです。組み込みのマネージ クラスを使用しようとしましたが、CookieContainer
クラスは、Cookie をキャプチャしようとしていた Web サイトからすべての Cookie を正しくキャプチャしていませんでした。Cookie を正しくキャプチャする方法がわかれば、マネージド クラスに戻ることになるかもしれません。
私の PHP スクリプトは Cookie をキャプチャする際に問題なく動作するので、libcurl.net を使用してほとんどの cURL 機能を C# プロジェクトに移植しました。私が抱えている問題は、CURLOPT_HTTPHEADER
cURL オプションを使用して複数の要求ヘッダーを送信する必要があり、次のように Slist データ型を使用して複数のヘッダーを渡す必要がある場合です。
Slist headers = new Slist();
headers.Append("Content-Type: application/x-www-form-urlencoded");
headers.Append("X-Requested-With: XMLHttpRequest");
easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers);
X-Requested-With: XMLHttpRequest
AJAXリクエストを偽造する必要がある場合がありますが、スクレイピングしているWebサイトがこれらの「偽の」AJAXリクエストの結果を返さないため、リクエストでヘッダーを渡していないようです。を設定した場合、ヘッダーCURLOPT_HTTPHEADER
を設定する必要がありますか、それともContent-Type
常にデフォルトになっていContent-Type: application/x-www-form-urlencoded
ますか?