1

クローラーを作成しましたが、一部のサイトでブロックされているようです。私がやりたいのは、偽のユーザー エージェント ID (のようなものMozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.12011-10-16 20:23:00) でページをフェッチすることです。はそれをサポートしていないことに注意してくださいfsockopen()。そのため、別の方法でそれを実行しようとしています。

これが私のコードです:

$sock = fsockopen($host, 80, $errno, $errstr, 30);

次に、その下で、ポインターで行っていることを次に示します。

    $request  = "HEAD "  . $path . " HTTP/1.1\r\n"; 
    $request .= 'Host: ' . $host . "\r\n"; 
    $request .= "Connection: Close\r\n\r\n"; 
    fwrite($sock, $request);

繰り返しますが、偽のブラウザ エージェントを設定するにはどうすればよいですか? 文字列に設定でき$requestますか?

4

3 に答える 3

1

(タグで提案したように)php cURLを使用する場合、次のことができるはずです:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.12011-10-16 20:23:00'));      
于 2012-11-12T18:22:03.597 に答える
0

これは私のために働いた

$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
$content = curl_exec( $ch );
echo $content;
$response = curl_getinfo( $ch );
curl_close ( $ch );
于 2014-06-28T22:41:44.137 に答える