So if you consider taking measures to prevent hotlinking, you need to consider manipulating HTTP_REFERER. The corresponding variable in the PHP script is $_SERVER['HTTP_REFERER'], which stores the value of HTTP_REFERER.
Since direct access to the target URL resource has been blocked by the above anti-hotlinking measures, we need something similar to a gateway to obtain it. To put it bluntly, it is to write a PHP script that has wrapped HTTP headers.
The following is a simple function implementation:
Copy code The code is as follows:
function getRemoteFile($url , $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
);
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
}
This is a relatively simple function. Its function is to forge the Referer (using the stream_context_create function) and then obtain the other party's data (using file_get_contents, you need to enable allow_url_fopen).
If you want to be more "complex", you can use sockets extension, which is beyond the scope of discussion here.
In addition, provide a regular function to get the host name
Copy the code The code is as follows:
function getHost($ url) {
$result = preg_match('/^http://([d|w|.]+)//', $url, $matches);
if (sizeof($matches) > ;= 2) {
return $matches[1];
} else {
return null;
}
}
Further expansion can be done Encapsulate it into a script, and then call
http://127.0.0.1/proxy.php?url=http://i.am/img to get the links that enable anti-hotlinking measures (then use it Below, use Javascript to replace all image links).
http://www.bkjia.com/PHPjc/322994.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/322994.htmlTechArticleSo if you consider breaking through anti-hotlinking measures, you need to consider manipulating HTTP_REFERER. The corresponding variable in the PHP script is $_SERVER['HTTP_REFERER'], which stores HTTP_REFER...