ip图片签名论坛个性签名档显示IP、操作系统、浏览器问题

原创 2017-05-16 15:37  阅读 357 views 次

人家资讯网

经常在网上,论坛中,看到有人用带有

IP签名档,十分有特点这是怎么

做出来的呢希望看完这篇文章以后你也能够拥有自己的个性IP签名

=================================

开始制作

=================================

论坛个性签名档显示IP、操作系统、浏览器问题

Tips:})();不用担心,你的电脑没有被入侵。之所以出现这样的情况,是因为这位网友使用了带有显IP功能的论坛签名图片而已,这些图片带有一些特殊代码,可以读取你的IP地址、操作系统、IE版本等数据并且显示出来。当然,显示出来的数据只有你自己能看到,别的网友看到的也是他们自己的相关信息,因此不用担心信息泄露,这顶多只能算是一个恶作剧罢了。

观摩地址:https://www.wasss.cn/.ip

IP图片签名原理:

创建画布

<?php
//创建画布
$img = imagecreatefrompng('bg.png');
//设置颜色
$blue = imagecolorallocate($img,0,0,200);
$red = imagecolorallocate($img,255,0,0);
$black = imagecolorallocate($img,0,0,0);
//输出文字
imagettftext($img, 12, 0, 10, 20, $red, "simkai.ttf", "IP:".$ip."  来自:".$adress);
imagettftext($img, 12, 0, 10, 40, $red, "simkai.ttf", "你的操作系统为:".$system);
imagettftext($img, 12, 0, 10, 60, $red, "simkai.ttf", "你的浏览器为:".$exp[0].$exp[1]);
imagettftext($img, 12, 0, 10, 80, $red, "simkai.ttf", "今天是:".$date);
imagettftext($img, 12, 0, 30, 100, $blue, "simkai.ttf", 人家资讯网 www.wasss.cn");
//输出图像
header("Content-type:image/png");
imagepng($img);
//销毁图像
imagedestroy($img);
?>

获取用户的系统信息

需要用到的知识点有以下几个:

  1. $_SERVER[‘HTTP_USER_AGENT’]
  2. stripos()
    function getSystem(){   
        $sys = $_SERVER['HTTP_USER_AGENT'];   
        if(stripos($sys, "NT 6.1"))
            $os = "Windows 7";   
        elseif(stripos($sys, "NT 6.0"))   
    		$os = "Windows Vista";   
        elseif(stripos($sys, "NT 5.1"))   
    		$os = "Windows XP";   
        elseif(stripos($sys, "NT 5.2"))   
    		$os = "Windows Server 2003";   
        elseif(stripos($sys, "NT 5"))   
    		$os = "Windows 2000";   
        elseif(stripos($sys, "NT 4.9"))   
    		$os = "Windows ME";   
        elseif(stripos($sys, "NT 4"))   
    		$os = "Windows NT 4.0";   
        elseif(stripos($sys, "98"))   
    		$os = "Windows 98";   
        elseif(stripos($sys, "95"))   
    		$os = "Windows 95";   
        elseif(stripos($sys, "Mac"))   
    		$os = "Mac";   
        elseif(stripos($sys, "Linux"))   
    		$os = "Linux";   
        elseif(stripos($sys, "Unix"))   
    		$os = "Unix";   
        elseif(stripos($sys, "FreeBSD"))   
    		$os = "FreeBSD";   
        elseif(stripos($sys, "SunOS"))   
    		$os = "SunOS";   
        elseif(stripos($sys, "BeOS"))   
    		$os = "BeOS";   
        elseif(stripos($sys, "OS/2"))   
    		$os = "OS/2";   
        elseif(stripos($sys, "PC"))   
    		$os = "Macintosh";   
        elseif(stripos($sys, "AIX"))   
    		$os = "AIX";   
        else  
            $os = "未知操作系统";   
    	return $os;   
    }  
    $system = getSystem();
    
    

检测用户的浏览器型号和版本

需要用到的知识点有以下几个:

  • $_SERVER[‘HTTP_USER_AGENT’]

用途:用来检查浏览页面的访问者在用什么操作系统(包括版本号)浏览器(包括版本号)等信息

  • stripos()

用途: stripos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串,则返回 false。里面可以包含三个参数,第一个参数用于规定被搜索的字符串,第二个参数用于规定要查找的字符,第三个参数用于规定开始搜索的位置。其中前两个参数必需,第三个可选。

  • 正则表达式,在此不说太多。
//分析返回用户网页浏览器名称,返回的数组第一个为浏览器名称,第二个是版本号。
function getBrowser() {
     $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串
     if (stripos($sys, "Firefox/") > 0) {
         preg_match("/Firefox/([^;)]+)+/i", $sys, $b);
         $exp[0] = "火狐浏览器";
         $exp[1] = $b[1];  //获取火狐浏览器的版本号
     } elseif (stripos($sys, "Maxthon") > 0) {
         preg_match("/Maxthon/([d.]+)/", $sys, $aoyou);
         $exp[0] = "傲游浏览器";
         $exp[1] = $aoyou[1];
     } elseif (stripos($sys, "MSIE") > 0) {
         preg_match("/MSIEs+([^;)]+)+/i", $sys, $ie);
         //$exp = "Internet Explorer ".$ie[1];
         $exp[0] = "IE浏览器";
         $exp[1] = $ie[1];  //获取IE的版本号
     } elseif (stripos($sys, "OPR") > 0) {
         preg_match("/OPR/([d.]+)/", $sys, $opera);
         $exp[0] = "Opera浏览器";
         $exp[1] = $opera[1];  //获取opera浏览器版本号,今天下载一个opera浏览器做测试,发现opera竟然也换成谷歌的内核了,囧
    }elseif (stripos($sys, "Chrome") > 0 && stripos($sys, "SE") > 0) {
         $exp[0] = "搜狗浏览器";
         $exp[1] = "";  
    }elseif (stripos($sys, "Chrome") > 0) {
         preg_match("/Chrome/([d.]+)/", $sys, $google);
         $exp[0] = "Chrome浏览器";
         $exp[1] = $google[1];  //获取google chrome的版本号
    }else {
         $exp = "未知浏览器";
         $exp[1] = "";    //其余的浏览器大家可以根据输出的$_SERVER['HTTP_USER_AGENT']信息来自行获取浏览器名称和版本号
     }
     return $exp;
 }
 $exp=getBrowser();
 $browser=$exp[0]

获取用户的IP及所在地信息

1.几个获取IP的变量

$_SERVER[‘REMOTE_ADDR’];//访问端(有可能是用户,有可能是代理的)IP
$_SERVER[‘HTTP_CLIENT_IP’];//代理端的(有可能存在,可伪造)
$_SERVER[‘HTTP_X_FORWARDED_FOR’];//用户是在哪个IP使用的代理(有可能存在,也可以伪造)

2.获取文件信息

fopen(文件名,读写);这个函数的第一个参数文件名可以是一个网址,这样就相当于打开一个网页,此时第二个参数可以设置为“读”即可,因为不需要进行写的操作;
file_get_contents($url);这个函数传入一个网址可以获取整个网页的内容;
preg_match_all(正则表达式,匹配内容,数组);这个函数大家应该很熟悉,通过正则表达式匹配第二个参数中的内容,然后得到的结果返回到第三个参数设置的数组中

//获取用户IP地址
function getIP(){
    if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) { 
            $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
        }elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) { 
            $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; 
        }elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) { 
            $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
        }elseif (getenv("HTTP_X_FORWARDED_FOR")) { 
            $ip = getenv("HTTP_X_FORWARDED_FOR"); 
        }elseif (getenv("HTTP_CLIENT_IP")) { 
            $ip = getenv("HTTP_CLIENT_IP"); 
        }elseif (getenv("REMOTE_ADDR")){ 
            $ip = getenv("REMOTE_ADDR"); 
        } else { 
            $ip = "Unknown"; 
        } 
    return $ip;
}
    $ip=getIP();

//获取地区信息
function getAdress($a){
    $url = "http://ip.chinaz.com/?IP=".$a;
    $fp = @fopen($url, "r") or die("超时");
    $fcontents = file_get_contents($url);
    preg_match_all("/==>> d+ ==>> (.*)</strong><br />
/", $fcontents, $regs);
    return $regs[1][0];
}
    $adress = getAdress($ip);

看完之后最终的演示地址请返回开头部分有看到。

游览器的agent返回前几段也可以看到。

本文地址:[http://www.wasss.cn/?p=901]
关注我们:请关注一下我们的WASSS.CN:扫描二维码访问本篇文章
版权声明:本文为原创文章,版权归 人家 所有,欢迎分享本文,转载请保留出处!
PREVIOUS:已经是最后一篇了

发表评论


表情