當前位置:首頁 » 編程語言 » php偽造referer

php偽造referer

發布時間: 2022-06-17 13:08:38

1. php 偽造 http_referer

function getContentCURL($url,$post_data = '',$user_agent="Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.8.1.3)", $header = 0, $follow_loc = 1, $cookie_file="/tmp/cookie.txt",$CURLOPT_TIMEOUT=30)
{
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_URL, $url);
@curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
@curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
@curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
@curl_setopt($ch, CURLOPT_HEADER, $header);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $follow_loc);
@curl_setopt($ch, CURLOPT_TIMEOUT, $CURLOPT_TIMEOUT);
if (trim($post_data) != '') {
@curl_setopt($ch, CURLOPT_POST, 1);
@curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$result = @curl_exec($ch);
@curl_close($ch);

return $result;
}
通過這種方式做代理, 你在仔細研究下吧
參考下
http://www.21andy.com/blog/20080507/1095.html

2. php防止偽造的數據從URL提交方法

針對偽造的數據從URL提交的情況,首先是一個檢查前一頁來源的如下代碼:
<?/*PHP防止站外提交數據的方法*/
function
CheckURL(){
$servername=$_SERVER['SERVER_NAME'];
$sub_from=$_SERVER["HTTP_REFERER"];
$sub_len=strlen($servername);
$checkfrom=substr($sub_from,7,$sub_len);
if($checkfrom!=$servername)die("警告!你正在從外部提交數據!請立即終止!");
}
?>
這個方法只能防止手動在瀏覽欄上輸入的URL。
事實上只要在伺服器上構造出一個指向該URL的鏈接(比如在發貼時加入超鏈),再點擊,這個Check就完全不起作用了。
目前覺得還是用POST的方法傳遞重要數據比較可靠。
可以在form中插入一些隱藏的text用於傳遞數據。
或者使用下面的方法,利用Ajax從客戶端向伺服器提交數據。
/*創建XHR對象*/
function
createXHR()
{
if
(window.XMLHttpRequest){
var
oHttp
=
new
XMLHttpRequest();
return
oHttp;
}
else
if
(window.ActiveXObject){
var
versions
=
["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];
for
(var
i
=
0;
i
<
versions.length;
i++){
try
{
var
oHttp
=
new
ActiveXObject(versions[i]);
return
oHttp;
}
catch
(error)
{}
}
}
throw
new
Error("你的瀏覽器不支持AJAX!");
}
/*用AJAX向page頁面傳遞數據*/
function
ajaxPost(url,query_string='')
{
var
xhr;
xhr
=
createXHR();
xhr.open('POST',url,false);
xhr.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded;
charset=gb2312");
xhr.onreadystatechange
=
function(){if
(xhr.readyState
==
4)if
(xhr.status
!=
200)return;}
xhr.send(query_string);
}

3. php偽造ip獲取網頁內容,求高手

偽造IP是不可能的,HTTP協議是機遇TCP,你發送GET命令過去必須留有準確的IP地址,否則對方無法把結果發給你,你與伺服器xxx.xxx.xx的通訊相當於寫信,你匿名寫信只能攻擊,要獲取返回的東西必須提交真實的地址。

無論使用CURL還是別的方法,都要受前面的基本規則限制。

編程上已經沒有辦法可走了,你可以考慮使用代理,通過代理伺服器去獲取數據,查封就換個代理伺服器。不過現在代理伺服器是很難找的。

4. php偽造referer獲取header,請大神指教

$out那部分不能這么寫

$out="GET$targetHTTP/1.1
Host:$host
Referer:$referer
Connection:Close
";

開頭不能有空行,且每一行必須有換行符分隔

或者用

$out="GET$targetHTTP/1.1
";
$out.="Host:$host ";
$out.="Referer:$referer ";
$out.="Connection:Close ";

5. php 怎偽造http referer怎用

建議讀這幾篇

http://blog.csdn.net/mayongzhan/archive/2008/01/24/2062890.aspx
http://blog.csdn.net/mayongzhan/archive/2008/04/28/2340408.aspx
http://blog.csdn.net/mayongzhan/archive/2008/01/24/2062895.aspx

下面是opt的參數對照的中文說明:
ps:php文檔里的這段是英文,簡直了.晦澀難懂!!!!!!

bool curl_setopt (int ch, string option, mixed value)
curl_setopt()函數將為一個CURL會話設置選項。option參數是你想要的設置,value是這個選項給定的值。下列選項的值將被作為長整形使用(在option參數中指定):
*CURLOPT_INFILESIZE: 當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。
*CURLOPT_VERBOSE: 如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。
*CURLOPT_HEADER: 如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。
*CURLOPT_NOPROGRESS: 如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。
*CURLOPT_NOBODY: 如果你不想在輸出中包含body部分,設置這個選項為一個非零值。
*CURLOPT_FAILONERROR: 如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。
*CURLOPT_UPLOAD: 如果你想讓PHP為上傳做准備,設置這個選項為一個非零值。
*CURLOPT_POST: 如果你想PHP去做一個正規的HTTP POST,設置這個選項為一個非零值。這個POST是普通的 application/x-www-from-urlencoded 類型,多數被HTML表單使用。
*CURLOPT_ftpLISTONLY: 設置這個選項為非零值,PHP將列出FTP的目錄名列表。
*CURLOPT_FTPAPPEND: 設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。
*CURLOPT_NETRC: 設置這個選項為一個非零值,PHP將在你的 ~./netrc 文件中查找你要建立連接的遠程站點的用戶名及密碼。
*CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
*CURLOPT_PUT: 設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項. *CURLOPT_MUTE: 設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。
*CURLOPT_TIMEOUT: 設置一個長整形數,作為最大延續多少秒。
*CURLOPT_LOW_SPEED_LIMIT: 設置一個長整形數,控制傳送多少位元組。
*CURLOPT_LOW_SPEED_TIME: 設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。
*CURLOPT_RESUME_FROM: 傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。
*CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。
*CURLOPT_TIMECONDITION: 傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。這僅用於HTTP。
*CURLOPT_TIMEVALUE: 傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。下列選項的值將被作為字元串:
*CURLOPT_URL: 這是你想用PHP取回的URL地址。你也可以在用curl_init()函數初始化時設置這個選項。
*CURLOPT_USERPWD: 傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。
*CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password] 格式的字元串去連接HTTP代理。
*CURLOPT_RANGE: 傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。
*CURLOPT_POSTFIELDS: 傳遞一個作為HTTP 「POST」操作的所有數據的字元串。
*CURLOPT_REFERER: 在HTTP請求中包含一個」referer」頭的字元串。
*CURLOPT_USERAGENT: 在HTTP請求中包含一個」user-agent」頭的字元串。
*CURLOPT_FTPPORT: 傳遞一個包含被ftp 「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-』(使用系統默認IP地址)。
*CURLOPT_COOKIE: 傳遞一個包含HTTP cookie的頭連接。
*CURLOPT_SSLCERT: 傳遞一個包含PEM格式證書的字元串。
*CURLOPT_SSLCERTPASSWD: 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。
*CURLOPT_COOKIEFILE: 傳遞一個包含cookie數據的文件的名字的字元串。這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。
*CURLOPT_CUSTOMREQUEST: 當進行HTTP請求時,傳遞一個字元被GET或HEAD使用。為進行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在確認你的伺服器支持命令先不要去這樣做。下列的選項要求一個文件描述(通過使用fopen()函數獲得):
*CURLOPT_FILE: 這個文件將是你放置傳送的輸出文件,默認是STDOUT.
*CURLOPT_INFILE: 這個文件是你傳送過來的輸入文件。
*CURLOPT_WRITEHEADER: 這個文件寫有你輸出的頭部分。
*CURLOPT_STDERR: 這個文件寫有錯誤而不是stderr。用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了:)

6. 如何改變或偽造HTTP-REFERER

先看看偽造的方法,看看伺服器端的手 段,伺服器可以輕松實現,但是一個直接的問題就是查 remote_addr的時候,就只有一個了,容易被禁止IP:

ASP:

dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP也可以
Http.open "GET",url,false
Http.setRequestHeader "Referer","http://www.fromdomain.cn/"
Http.send()

PHP(前 提是裝了curl):

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.readdomain.cn/xxx.asp");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.fromdomain.cn/");
curl_exec ($ch);
curl_close ($ch);

PHP(不裝curl用sock)

$server = 'www.readdomain.cn';
$host = 'www.fromdomain.cn';
$target = '/xxx.php';
$referer = 'http://www.aslibra.com/'; // Referer
$port = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
$out = "GET $target HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Cookie: SESSIONID=test\r\n";
$out .= "Referer: $referer\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}

VB.NET/C#.NET

Dim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()
或 者
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..

引用
原理都是sock構造http頭來senddata。其他語言什麼的比如perl也可以,目前比較簡單的防 御偽造referer的方法是用驗證碼(Session)。現在有一些能防盜鏈軟體的商業公司比如UUDOG,linkgate,VirtualWall 什麼的,都是開發的應用於IIS上面的dll。有的是採用cookies驗證、線程式控制制,有的是能隨機生成文件名然後做URL重寫。有的方法能的確達到不 錯的效果.

7. php編程:突破防採集,用php代碼獲取 一個網頁的內容

<?php
$url = '網址'
$str = gzinflate(substr(file_get_contents($url),10,-8));
echo $str;
?>

目標網址gzip壓縮等級高了,要解密

8. 看看這個ASP偽造REFERER怎麼使用

阿權些研究問題其實偽造HTTP-REFERER些流氓軟體或者些批量注冊或灌注信息工具必備才能跳伺服器 HTTP-REFERER檢查

於研究或者於偽造解吧

先看看偽造看看伺服器端手 段伺服器輕松實現直接問題查 remote_addr候容易禁止IP:

ASP:

dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP
Http.open "GET",url,false
Http.setRequestHeader "Referer",""
Http.send()

PHP(前 提裝curl):

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "");
curl_setopt ($ch, CURLOPT_REFERER, "");
curl_exec ($ch);
curl_close ($ch);

9. PHP $_SERVER['HTTP_REFERER'] 賦值

$_SERVER是系統變數,不能修改的,就相當於echo它表示輸出一樣,你不能修改成用echo來當作if用一個道理。

你可以另外定義一個變數,例如

$former_url=".com";

然後下面調用的時候就不調用$_SERVER['HTTP_REFERER'],直接調用自己定義的變數,即$former_url

10. php 偽造或隱藏 http referer

三樓,人家明顯問的是黑b網站的事情,不是什麼負載均衡。
因為發給b網站的請求如果是從客戶端瀏覽器發起的,那麼refer是用戶機器上發起的,瀏覽器會自動根據當前頁設置refer。所以你要是想偽造,就只能做proxy,或者欺騙瀏覽器讓他認為當前網站域名就是b網站。
proxy的方式,a網站作為代理,要同時承擔這部分欺騙引起的流量,如果你是想黑別人,那麼會得不償失。
欺騙瀏覽器方案,這種可以考慮用js來實現,不過具體方法就不告訴你了。

那也是一個意思,就只有我說的這兩種方法。

熱點內容
阿里雲訪問mysql資料庫 發布:2025-02-06 18:17:57 瀏覽:788
原神遊戲伺服器ip 發布:2025-02-06 17:54:23 瀏覽:810
如何查筆記本電腦的真正配置 發布:2025-02-06 17:48:07 瀏覽:81
存儲器存在地址 發布:2025-02-06 17:47:28 瀏覽:539
phpsocket教程 發布:2025-02-06 17:42:13 瀏覽:423
mysql解壓縮版安裝 發布:2025-02-06 17:26:33 瀏覽:179
phpgd圖片 發布:2025-02-06 17:24:34 瀏覽:206
php代碼整理 發布:2025-02-06 17:24:31 瀏覽:477
java可執行文件 發布:2025-02-06 17:18:59 瀏覽:249
衛士相當於現在什麼配置 發布:2025-02-06 17:05:04 瀏覽:409