esa*_*wan 26 php email tracking geolocation spy
我已经看到像spypig.com这样的服务在电子邮件中放置一个小图像,并在打开时从哪里跟踪.他们跟踪城市,国家,IP地址等.这是怎么做到的?
Pas*_*TIN 57
基本上,在您的电子邮件的HTML正文中,将会有一个如下所示的<img>标记:
<img src="http://www.yoursite.com/tracker.php?id=123456" alt="" />
Run Code Online (Sandbox Code Playgroud)
当有人阅读他的邮件时,如果启用了图像,则电子邮件客户端将发送请求tracker.php以加载图像,并将其id=123456作为参数传递.
此tracker.php脚本将在您的服务器上,并在调用时,它将:
id参数,id每封电子邮件生成不同的电子邮件.
该tracker.php脚本知道从哪些IP地址它被称为-像任何其他PHP脚本:
$ipAddress = $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
并且,从此IP地址开始,您可以使用地理定位服务来查找电子邮件已在世界中的哪个位置打开.
作为几个示例,您可以查看MaxMind或IPInfoDB
如您所知,这id=123456对应于一个特定的电子邮件地址,这样可以找出每个订阅者的位置.
Nav*_*nDA 12
1.将跟踪器图像放在电子邮件中
<img src="http://www.yoursite.com/tracker.php?eid=123456&uid=123" alt="" width="1px" height="1px">
Run Code Online (Sandbox Code Playgroud)
它的工作非常简单,一旦您的邮件打开,该跟踪器图像就会将请求发送到服务器,从该请求我们可以通过使用userID创建图像URL来获取信息,并且还可以考虑用户读取该邮件.
注意:不要使用display:none; 用于隐藏图像的属性,可以通过垃圾邮件算法进行过滤.并且不要放置任何JavaScript代码,它也会阻止垃圾邮件过滤器
2.在tracker.php上
<?php
header("Content-Type: image/jpeg"); // it will return image
readfile("img.jpg");
dbfunction(); // place your db code
?>
Run Code Online (Sandbox Code Playgroud)
3.通过以下功能获取IP地址.
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$PublicIP = get_client_ip();
Run Code Online (Sandbox Code Playgroud)
4.地点:
任何地理定位服务都可以获得该位置,您可以使用像nekudo,freegeoip这样的开源GeoLocation查找 程序.
例如
<?php
$json = file_get_contents("http://ipinfo.io/$PublicIP/geo");
$json = json_decode($json ,true);
$country = $json['country_name'];
$region= $json['region_name'];
$city = $json['city'];
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39519 次 |
| 最近记录: |