1

ロード中のページのリファラーヘッダーを設定できるかどうか疑問に思っていましたか?

そのため、ページをロードするよりもリファラーを設定してください。

実行したいこのコードがあり、完全に動作しますが、これにもリファラー URL を追加したいと考えています。

$data = file_get_contents('http://Domain');
$regex = '/<div\b[^>]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|<(?!\/?div\b[^>]*>))+)|(<div\b[^>]*>(?>(?1)|(?2))*<\/div>))?<\/div>/i';
preg_match($regex,$data,$match);
//var_dump($match);
echo $match[0];

別のページから div を読み込み、リファラーを「ドメイン」に設定したい

ありがとう!

4

2 に答える 2

5

リファラーや他の多くのものを設定できますが、file_get_contents()curlはより高速でカスタマイズしやすいため、引き続き使用できます。

<?php 
$url = 'example.com';
$referer = 'Domain';


$header[] = "Accept: text/xml,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";

$opts = array('http'=>array('method'=>"GET",
                            'header'=>implode('\r\n',$header)."\r\n".
                            "Referer: $referer\r\n",
                            'user_agent'=> "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8"));

$context = stream_context_create($opts);

$data = file_get_contents($url, false, $context);
?>

または、curl を使用できます。

<?php 
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_REFERER, $referer);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);

$data = curl_exec($curl);
?>
于 2012-06-15T04:17:35.540 に答える
0

curlを使用するときと同じように、コンテンツjsutを使用できるはずです...データを使用できるようにCURLOPT_RETURNTRANSFERを設定することにより...

$ch = curl_init();
curl_setopt_array($ch, array(
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_REFERER => 'your referer value'
  CURLOPT_URL => 'http://Domain'
));

$data= curl_exec($ch);
curl_close($ch);

$regex = '/<div\b[^>]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|<(?!\/?div\b[^>]*>))+)|(<div\b[^>]*>(?>(?1)|(?2))*<\/div>))?<\/div>/i';
preg_match($regex,$data,$match);
//var_dump($match);
echo $match[0];
于 2012-06-15T04:14:39.260 に答える