【问题标题】:can I set the http_referer on a pageload?我可以在页面加载上设置 http_referer 吗?
【发布时间】:2013-09-30 11:58:30
【问题描述】:

我想知道是否可以为正在加载的页面设置引用标题?

所以设置referer而不是加载页面。

我有这段代码,我想执行并完美运行,但我也想将引用 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 并将引用设置为“域”

谢谢!

【问题讨论】:

  • 不使用裸 file_get_contents。您需要使用流或 curl 来设置 HTTP 标头。
  • 我可以用 curl 设置标题并仍然显示 div 内容吗?
  • curl 就像 zombo.com,任何事情都是可能的。
  • 嘎啊。不要在评论中发布代码。它完全不可读。您可以编辑您的问题并将其放入格式正确的代码块中。
  • 无论如何我有一个脚本可以在 curl 中设置引用者,但我不知道如何应用引用者并同时显示 div。

标签: php header set spoofing referer


【解决方案1】:

您可以设置引荐来源网址和许多其他内容,但仍然使用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);
?>

【讨论】:

    【解决方案2】:

    您应该能够像任何时候使用 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];
    

    【讨论】:

    • 发生的事情是脚本正在加载玩家并且该玩家正在检查引荐来源,而 curl 脚本没有为玩家设置引荐来源,这是第二次检查。有没有办法设置脚本在所有实例中发送引用者?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多