0

最近、自分のプロジェクトの 1 つで libcurl.net をHttpWebRequestおよびHttpWebResponseクラスの代わりに使用し始めました。マネージ クラスの代わりに libcurl.net を使用することにした理由は、libcurl.net が PHP の cURL の動作を模倣し、PHP から一部のコードを移植していたためです。組み込みのマネージ クラスを使用しようとしましたが、CookieContainerクラスは、Cookie をキャプチャしようとしていた Web サイトからすべての Cookie を正しくキャプチャしていませんでした。Cookie を正しくキャプチャする方法がわかれば、マネージド クラスに戻ることになるかもしれません。

私の PHP スクリプトは Cookie をキャプチャする際に問題なく動作するので、libcurl.net を使用してほとんどの cURL 機能を C# プロジェクトに移植しました。私が抱えている問題は、CURLOPT_HTTPHEADERcURL オプションを使用して複数の要求ヘッダーを送信する必要があり、次のように 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: XMLHttpRequestAJAXリクエストを偽造する必要がある場合がありますが、スクレイピングしているWebサイトがこれらの「偽の」AJAXリクエストの結果を返さないため、リクエストでヘッダーを渡していないようです。を設定した場合、ヘッダーCURLOPT_HTTPHEADERを設定する必要がありますか、それともContent-Type常にデフォルトになっていContent-Type: application/x-www-form-urlencodedますか?

4

1 に答える 1