找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 626|回复: 0

获取百度贴吧用户IP的实现思路(PHP)

[复制链接]

2

主题

2

回帖

43

牛毛

初生牛犊

积分
43
发表于 2012-3-13 19:33:18 | 显示全部楼层 |阅读模式 来自 江苏省南通市
  要获取百度贴吧用户IP,就要在贴吧页面创建个切入点,显然贴吧是不可能支持插入PHP之类代码执行的,这里我们用到一个方法,这个方法和我们经常在百度贴吧里看到的诸如“1楼显示本贴中最新回复内容”之类帖子同样原理。方法如下:
  在百度贴吧发贴时插入图片时输入如“”此类格式的伪图片URL,之所谓称为“伪图片URL”,在于贴吧发图片是将其作为图片URL,而实际上“/baidutieba.jpg/”是我们事先在web空间上的创建的文件夹,虽然最后没有斜杠浏览器会自动将其做为文件夹来访问,我们再在“/baidutieba.jpg/”目录下建立一个index.php索引文件,并写入想要执行的php代码,这样,在帖吧里浏览含有伪图片“”的帖子时就会触发“/index.php”页面的执行。
  这里要注意的是,这时执行的php页面相当于是一个嵌套页面,是无法获取贴吧页面的session、cookie的,我们可以将其视为访客新打开一个不同的浏览器进行对该页面访问。
  当然,要实现如上方法,前提是你自己拥有一个网站空间,且web环境不会将这种文件夹解析为文件,我们可以这样测试下:
建立文件后缀格式的文件夹,如“/abcd9.jpg/“,在其中建立index.php,随意写入能输出的代码,这里以显示php服务器配置信息为例:
  <?
      phpinfo();
      ?>
  在浏览器输入,此时如果返回404错误,则是服务器将此路径解析为网络图片;如果返回php服务器配置信息,则表示php执行成功。
  index.php获取访客IP的代码:
  <?      
  @header("Content-type:image/jpeg");
  echo file_get_contents("pic.jpg"); //显示图片
  if($_SERVER[HTTP_REFERER]!=''){
  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”是/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的目的。
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 00:34 , Processed in 0.138940 second(s), 33 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表