php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)

2015-01-24信息快讯网

如果考虑突破防盗链的措施,就需要考虑在 HTTP_REFERER 上面做手脚了。很多网站是通过referer来判断是否盗链。

那么如果考虑突破防盗链的措施,就需要考虑在 HTTP_REFERER 上面做手脚了。PHP 脚本中对应的变量是 $_SERVER['HTTP_REFERER'] ,它存储了 HTTP_REFERER 的值。

由于直接访问目标 URL 资源已经被上述防盗链的措施给屏蔽,所以我们需要个类似网关的玩意去获取。说白了就是编写已经包装过的 HTTP 头的 PHP 脚本。

下面是简单的函数实现:
 
function getRemoteFile($url, $refer = '') { 
$option = array( 
'http' => array( 
'header' => "Referer:$refer") 
); 
$context = stream_context_create($option); 
return file_get_contents($url, false, $context); 
} 

这是个比较简单的函数,其功能就是伪造 Referer (使用 stream_context_create 函数)然后获取对方的数据(使用 file_get_contents,需要开启 allow_url_fopen )。

如果想“复杂”一点,可以使用 sockets 扩展,这不在这里的讨论范围以内。

另外,再提供个获取主机名的正则函数

 
function getHost($url) { 
$result = preg_match('/^http:\/\/([\d|\w|\.]+)\//', $url, $matches); 
if (sizeof($matches) >= 2) { 
return $matches[1]; 
} else { 
return null; 
} 
} 

再进一步的扩展,可以封装成脚本,然后譬如调用

http://127.0.0.1/proxy.php?url=http://i.am/img就可以获取那些开启防盗链措施的链接了(再发挥下,使用 Javascript 将图片链接全部替换)。

php插入中文到sqlserver 2008里出现乱码的解决办法分享
UCenter 批量添加用户的php代码
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
php学习之function的用法
PHP中防止直接访问或查看或下载config.php文件的方法
php中配置文件操作 如config.php文件的读取修改等操作
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
apache+codeigniter 通过.htcaccess做动态二级域名解析
PHP连接SQLSERVER 注意事项(附dll文件下载)
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
header中Content-Disposition的作用与使用方法
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
redis 队列操作的例子(php)
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
PHP stream_context_create()作用和用法分析
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
php模拟asp中的XmlHttpRequest实现http请求的代码
php函数之子字符串替换 str_replace
php expects parameter 1 to be resource, array given 错误
WordPress判断用户是否登录的代码
在MongoDB中模拟Auto Increment的php代码
php SQL Injection with MySQL
PHP下通过file_get_contents的代理使用方法
php5 apache 2.2 webservice 创建与配置(java)
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
php iconv() : Detected an illegal character in input string
由php的call_user_func传reference引发的思考
©2014-2024 dbsqp.com