很多站长朋友们都不太清楚php伪造请求头,今天小编就来给大家整理php伪造请求头,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP如何判断一个请求是否来源于本域并且是ajax请求? 2、 怎么用php采集网站数据 3、 php伪造referer获取header,请大神指教 4、 如何向PHP伪造自己的ip PHP如何判断一个请求是否来源于本域并且是ajax请求?通过请求头的Referer属性可以获取来源,X-Requested-With属性(不代表ajax一定需要这个请求头属性)可以判断是否是ajax。但是请求头这种东西,也知道的,很容易伪造。如果仅仅是做业务上的判断,请求头就够了。
怎么用php采集网站数据简单的分了几个步骤:
1、确定采集目标
2、获取目标远程页面内容(curl、file_get_contents)
3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样
4、入库
php伪造referer获取header,请大神指教$out那部分不能这么写
$out = "GET $target HTTP/1.1\r\nHost: $host\r\nReferer: $referer\r\nConnection: Close\r\n";
开头不能有空行,且每一行必须有换行符分隔
或者用
$out = "GET $target HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Referer: $referer\r\n";
$out .= "Connection: Close\r\n";
如何向PHP伪造自己的ip要看具体代码是怎么写的,如果代码写得不好是有可能伪造的。
获取IP的方法有几种,通过例子看一下,这个是ThinkPHP里的获取IP的函数:
/**
* 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @param boolean $adv 是否进行高级模式获取(有可能被伪装)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}
$_SERVER['HTTP_CLIENT_IP'] 是HTTP信息中的IP,存在于http请求的header中,可以伪造;
$_SERVER["REMOTE_ADDR"] 可取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。不可以伪造,但可以用代理。
$_SERVER["HTTP_X_FORWARDED_FOR"] 可以透过代理服务器取得客户端的真实 IP 地址,但有时候也不管用,也可以伪造。
关于php伪造请求头的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php伪造请求头 php伪装ip的详细内容...