在电子邮件中插入跟踪代码,以此跟踪邮件何时被对方打开,以及对方的IP地址、操作系统、浏览器等等信息……这是一项很有年头的老技巧,但我们发现它今天依然能发挥作用。 为了简便,本文只举例获取IP地址一项来谈谈,过程如何实现。 本文属于“雕虫小技”系列入门科普,高手大侠们可就此选择一笑而过,或多多指正! 1、工作原理 在邮件中插入跟踪代码 --> 发送,等对方打开邮件 --> 代码被执行 --> 将IP地址等信息发送回来。 2、跟踪代码部分 代码通常是伪装成一张图片的形式,比如: <img src='https://www.baidu.com/img/bd_logo1.png'> 变更后的代码:
此时不是logo1.png这样具体的图片文件名了,而是一个网页地址,并且还带了参数。 这个页面将执行一系列动作:
代码大致如下: //指定图片路径 $src = 'images/1px.png';
//获取图片信息 $info = getimagesize($src);
//获取图片扩展名 $type = image_type_to_extension($info[2],false);
//动态的把图片导入内存中 $fun = 'imagecreatefrom{$type}'; $image = $fun($src);
//指定输入类型 header('Content-type:'.$info['mime']);
//动态的输出图片到浏览器中 $func = 'image{$type}'; $func($image);
//销毁图片 imagedestroy($image);
$flag = $_SERVER['QUERY_STRING']; if (empty($flag) || $flag == '') { $flag = flag.time(); }
$mysql_server = '118.***.***.***'; $mysql_user = 'root'; $mysql_password = '******'; $mysql_db = 'app_*****';
mysql_connect($mysql_server,$mysql_user,$mysql_password) or die ('Connnect DB Error...'); mysql_select_db ($mysql_db) or die ('Choose DB Error...'); mysql_query ('set names 'utf8'');
$sql = 'insert into tab_*** (flag, ip, referer, createTime)values(''.$flag.'', ''.$_SERVER['REMOTE_ADDR'].'', ''.$_SERVER['HTTP_REFERER'].'', '.time().')'; if (mysql_query($sql)){ // 写入数据库 } 这段代码运行后将直接输出一张图片,可被直接远程引用,就是上面说到的替换方式,替换了百度logo图片:
|
|