cURL と PHP を使用して特定の HTTP ヘッダーを Web サイトに送信しようとしています。
このサイトのリンクをクリックして FireBug でネットワークを分析すると、このリンクを呼び出すすべての POST メソッドと GET メソッドが表示されます。ここにヘッダーがあります。
応答ヘッダー:
Connection Keep-Alive
Content-Encoding gzip
Content-Length 20
Content-Type text/html; charset=utf-8
Date Mon, 31 Dec 2012 12:55:57 GMT
Keep-Alive timeout=5, max=100
Location http://www.example.com/a/b/11111
Server Apache/2.2.22
Vary Accept-Encoding
X-Powered-By PHP/5.3.10-1ubuntu3.4
リクエスト ヘッダー:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Connection keep-alive
Cookie referee_id=number;authautologin=number;session=number;uber_video=number
DNT 1
Host www.example.com
Referer http://www.referersite.com
User-Agent Mozilla/5.0 (Windows NT 6.1;WOW64;rv:17.0) Gecko/17.0 Firefox/17.0
送信されたデータ応答ヘッダー
Content-Length 6
Content-Type application/x-www-form-urlencoded
次に、FireBug には、必要なメソッドを新しいタブでもう一度送信するオプションがあります。それが送信され、リンクをクリックしたように見えますが、実際にはクリックしていません。HTTP ヘッダーを使用しました。私が望むのは、これを行うことですが、cURL を使用することです。ここに、私が言っているオプションがあります: http://img5.imageshack.us/img5/3841/sinttulodho.png (Abrir en nueva pastaña = 新しいタブで開く)
だからここに私の試みがあります:
<?
$url = 'http://www.example.com/a/b/1?c=1';
function disguise_curl($url) {
$curl = curl_init();
$header[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive:timeout=5, max=100";
$header[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3";
$header[] = "Accept-Language:es-ES,es;q=0.8";
$header[] = "Pragma: ";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.referersite.com');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate,sdch');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl);
curl_close($curl);
}
echo disguise_curl($url);
?>
うまくいきません。HTTP ヘッダーを使用する他の方法や、コードに何か問題がありますか?