获取百度贴吧用户IP的实现思路(PHP)
要获取百度贴吧用户IP,就要在贴吧页面创建个切入点,显然贴吧是不可能支持插入PHP之类代码执行的,这里我们用到一个方法,这个方法和我们经常在百度贴吧里看到的诸如“1楼显示本贴中最新回复内容”之类帖子同样原理。方法如下:在百度贴吧发贴时插入图片时输入如“http://www.abcd9.com/baidutieba.jpg”此类格式的伪图片URL,之所谓称为“伪图片URL”,在于贴吧发图片是将其作为图片URL,而实际上“/baidutieba.jpg/”是我们事先在web空间上的创建的文件夹,虽然最后没有斜杠浏览器会自动将其做为文件夹来访问,我们再在“/baidutieba.jpg/”目录下建立一个index.php索引文件,并写入想要执行的php代码,这样,在帖吧里浏览含有伪图片“http://www.abcd9.com/baidutieba.jpg”的帖子时就会触发“http://www.abcd9.com/baidutieba.jpg/index.php”页面的执行。
这里要注意的是,这时执行的php页面相当于是一个嵌套页面,是无法获取贴吧页面的session、cookie的,我们可以将其视为访客新打开一个不同的浏览器进行对该页面访问。
当然,要实现如上方法,前提是你自己拥有一个网站空间,且web环境不会将这种文件夹解析为文件,我们可以这样测试下:
建立文件后缀格式的文件夹,如“/abcd9.jpg/“,在其中建立index.php,随意写入能输出的代码,这里以显示php服务器配置信息为例:
<?
phpinfo();
?>
在浏览器输入http://www.abcd9.com/abcd9.jpg,此时如果返回404错误,则是服务器将此路径解析为网络图片;如果返回php服务器配置信息,则表示php执行成功。
index.php获取访客IP的代码:
<?
@header("Content-type:image/jpeg");
echo file_get_contents("pic.jpg"); //显示图片
if($_SERVER!=''){
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) { //获取ip
if ($_SERVER["HTTP_CLIENT_IP"]) {
$proxy = $_SERVER["HTTP_CLIENT_IP"];
} else {
$proxy = $_SERVER["REMOTE_ADDR"];
}
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
if ($_SERVER["HTTP_CLIENT_IP"]) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
}
$ip='IP:'.$ip;
if (isset($proxy)) {//获取代理ip
$ip=$ip.' proxy IP:'.$proxy;
}
说明:代码中“pic.jpg”是http://www.abcd9.com/abcd9.jpg/index.php执行后显示的图片,我们可以将一个仅有白色背景的小图片存为pic.jpg上传到“/abcd9.jpg/”目录下,这是用来避免在贴子内因图片标签调用伪图片url的图像失败而显示红色叉。
(上述方法已实践成功;下述方法仅是思路,有待实践。)
至此,我们就能在帖吧获取用户IP,但也仅仅是获取到了IP,不能获取session、cookie,怎么将IP跟当前登陆的用户ID关联呢?这里,我们就要用到PHP的GD库截屏函数 (参考文章:http://www.abcd9.com/?post=72),在index.php获取IP后截取屏幕,生成图片时以当前IP命名,生成类似192.168.1.1.jpg 格式的图片,这样查看网站空间里的记录图片就能将IP跟用户ID相对应,实现获取百度贴吧用户IP的目的。
页:
[1]