2011-06-04 94 views
0

有沒有辦法將用戶重定向到另一個網站並同時僞造引用者? 試過這與我的代碼,我知道它錯了,但那只是我能得到多遠。在同一時間重定向和僞造引用者

<?php 
    $page1 = "http://google.com"; $page2 = "http://yahoo.com/"; 
    $mypages = array($page1,$page2); 
    $myrandompage = $mypages[mt_rand(0, count($mypages) -1)]; 
    $sites = array_map("trim", file("links.txt")); 
    $referer = $sites[array_rand($sites)]; 

function fake_it($url, $ref, $agent) 
{ 
    $curl = curl_init(); 
    $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
    $header[0] .= "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"; 
    $header[] = "Pragma: "; // browsers keep this blank. 

    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_USERAGENT, $agent); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($curl, CURLOPT_REFERER, $ref); 
    curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); 
    curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 5000); 

    $html = curl_exec($curl); 
    curl_close($curl); 

    // returns the content provided by the site 
    return $html; 
} 

//Below would send a request to the url, with the second parameter as the referrer 
echo fake_it($myrandompage, $referer,$_SERVER['HTTP_USER_AGENT']); 

?> 

我想是從refer.php去 - > google.com(引薦=某些其他URL)..

+0

這是沒有重定向。但是,除了從這一眼看起來確實很好。出了什麼問題,你怎麼知道? – GolezTrol 2011-06-04 02:30:42

+0

我知道它不重定向那就是爲什麼我說錯了。我知道它的錯誤,因爲在地址欄中它說'http:// localhost/redirect/refer.php'而不是yahoo.com – 2011-06-04 02:35:13

+0

嗯,我認爲這是不可能的。你不能告訴你的瀏覽器你實際上是雅虎,而你不是。你可以使用'header('Location:http://www.yahoo.com');'重定向到Yahoo,但這只是一個簡單的重定向,沒有你能夠影響引用者。如果你想要的是如此簡單的可能,這個世界將是一個尷尬的地方。 :) – GolezTrol 2011-06-04 02:45:27

回答

0

我不認爲你可以改變引薦的。

我知道垃圾引薦的唯一辦法是要麼代理頁面加載的東西,如捲曲(這是壞主意,壞人壞事),或我相信你可以從一個HTTPS頁面傳出去。

我不是很確定,但我似乎記得瀏覽器在出於安全原因從HTTPS站點發出時不會發送引用鏈接。

勒姆仔細檢查。

編輯:根據RFC 2616,當來自HTTPS安全站點時瀏覽器不應該發送引用。

參考:http://tools.ietf.org/html/rfc2616#section-15.1.3

客戶不應該包含在(非安全) HTTP請求一個Referer標頭字段,如果引用頁用安全 協議傳送。

2

你可以做的是將用戶重定向到一個HTTPS的網站,如damianb描述+做你redirect.php腳本元刷新:

redirect.php:(刷新標記):如https://www.myurl.com/redirect.php?url=http://www.someotherurl.com

<?php $destination = $_GET['url']; ?> 
<html><head><meta http-equiv="refresh" content="0;url=<?php echo $destination; ?>/"></head><body></body></html> 

現在你有2個武器(HTTPS,併爲瀏覽器仍然發送引用者戰鬥。

在RFC 2616,它說:

1.「如果一個網站是由HTTP訪問安全(HTTPS)連接和一個鏈接指向任何地方,除了其他安全的地方,然後引薦字段不發送」

但由於這不是完全真實..不幸的是,你可以考慮這個太:

2.「大多數Web瀏覽器不發送引薦字段時,他們被指示使用重定向‘刷新’這不包括Opera a的某些版本許多移動網絡瀏覽器。然而,這個重定向方法是由萬維網聯盟(W3C)氣餒。[7]」

http://en.wikipedia.org/wiki/HTTP_referrer#Referer_hiding

測試了Chrome和Firefox。祝你好運!