php中突破基于HTTP_REFERER的防盜鏈措施(stream_context_create)
由于直接訪問目標(biāo) URL 資源已經(jīng)被上述防盜鏈的措施給屏蔽,所以我們需要個類似網(wǎng)關(guān)的玩意去獲取。說白了就是編寫已經(jīng)包裝過的 HTTP 頭的 PHP 腳本。
下面是簡單的函數(shù)實現(xiàn):
function getRemoteFile($url, $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
);
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
}
這是個比較簡單的函數(shù),其功能就是偽造 Referer (使用 stream_context_create 函數(shù))然后獲取對方的數(shù)據(jù)(使用 file_get_contents,需要開啟 allow_url_fopen )。
如果想“復(fù)雜”一點,可以使用 sockets 擴展,這不在這里的討論范圍以內(nèi)。
另外,再提供個獲取主機名的正則函數(shù)
function getHost($url) {
$result = preg_match('/^http:\/\/([\d|\w|\.]+)\//', $url, $matches);
if (sizeof($matches) >= 2) {
return $matches[1];
} else {
return null;
}
}
再進一步的擴展,可以封裝成腳本,然后譬如調(diào)用
http://127.0.0.1/proxy.php?url=http://i.am/img就可以獲取那些開啟防盜鏈措施的鏈接了(再發(fā)揮下,使用 Javascript 將圖片鏈接全部替換)。
相關(guān)文章
PHP實現(xiàn)的AES雙向加密解密功能示例【128位】
這篇文章主要介紹了PHP實現(xiàn)的AES雙向加密解密功能,結(jié)合實例形式分析了基于AES算法的加密解密類定義與使用技巧,需要的朋友可以參考下2018-09-09php簡單實現(xiàn)多字節(jié)字符串翻轉(zhuǎn)的方法
這篇文章主要介紹了php簡單實現(xiàn)多字節(jié)字符串翻轉(zhuǎn)的方法,涉及php操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03php通過array_unshift函數(shù)添加多個變量到數(shù)組前端的方法
這篇文章主要介紹了php通過array_unshift函數(shù)添加多個變量到數(shù)組前端的方法,涉及php中array_unshift函數(shù)操作數(shù)組的使用技巧,需要的朋友可以參考下2015-03-03PHP的圖像處理實例小結(jié)【文字水印、圖片水印、壓縮圖像等】
這篇文章主要介紹了PHP的圖像處理,結(jié)合實例形式總結(jié)分析了PHP針對文字水印、圖片水印、壓縮圖像等相關(guān)操作實現(xiàn)技巧,需要的朋友可以參考下2019-12-12PHP系列學(xué)習(xí)之日期函數(shù)使用介紹
PHP有非常豐富的庫資源,便于開發(fā)者很容易的處理一些業(yè)務(wù)。由于我們在項目中與日期接觸最多,所以今天就從日期函數(shù)入手學(xué)習(xí)2012-08-08php mailer類調(diào)用遠(yuǎn)程SMTP服務(wù)器發(fā)送郵件實現(xiàn)方法
這篇文章主要介紹了php mailer類調(diào)用遠(yuǎn)程SMTP服務(wù)器發(fā)送郵件實現(xiàn)方法,結(jié)合實例形式分析了php mailer類的調(diào)用及郵件發(fā)送相關(guān)技巧,需要的朋友可以參考下2016-03-03