4

これは 2 つの部分からなる質問です。

Q1: cURL ベースのリクエストは、ブラウザ ベースのリクエストを 100% 模倣できますか?

Q2:はいの場合、すべてのオプションを設定する必要があります。そうでない場合、cURL で真似できないブラウザの追加機能は何ですか?

私はウェブサイトを持っており、単一の IP から非常に短い時間で何千ものリクエストが行われているのを見ています。これらのリクエストは私のすべてのデータを収集します。使用されたエージェントを特定するためにログを見ると、ブラウザからのリクエストのようです。そのため、ユーザーではなくボットであるかどうかを知りたいと思っていました.

前もって感謝します

4

2 に答える 2

5

このページには、あなたの質問に対するすべての回答があります。大体のものは真似できます。

于 2009-12-18T07:42:45.207 に答える
3

R1 :すべての正しいヘッダーを設定すれば、はい、curl ベースのリクエストはブラウザベースのリクエストを模倣できると思います: 結局、どちらも HTTP リクエストを送信します。特定の規則 (つまり、HTTP RFC)


R2:この質問に答える最善の方法は、ブラウザが何を送信しているかを確認することです。たとえば、Firefox では、FirebugまたはLiveHTTPHeadersのいずれかを使用してそれを取得できます。

たとえば、このページを取得するために、Firefox は次のリクエスト ヘッダーを送信しました。

GET /questions/1926876/can-a-curl-based-http-request-imitate-a-browser-based-request-completely HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://stackoverflow.com/questions/1926876/can-a-curl-based-http-request-imitate-a-browser-based-request-completely/1926889
Cookie: .......
Cache-Control: max-age=0

(いくつかの情報を削除しただけですが、アイデアはわかります;-))

curl を使用するとcurl_setopt、HTTP ヘッダーを設定できます。ここでは、おそらくCURLOPT_HTTPHEADER, CURLOPT_COOKIE, CURLOPT_USERAGENT, ...の組み合わせを使用する必要があります。

于 2009-12-18T07:41:38.940 に答える