| 关键词: 图片 http SERVER PHP jpg abcd baidutieba 方法 百度贴吧 一个 |
要获取百度贴吧用户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.webp"); //显示图片 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”是http://www.abcd9.com/abcd9.jpg/index.php执行后显示的图片,我们可以将一个仅有白色背景的小图片存为pic.jpg上传到“/abcd9.jpg/”目录下,这是用来避免在贴子内因图片标签调用伪图片url的图像失败而显示红色叉。 (上述方法已实践成功;下述方法仅是思路,有待实践。) 至此,我们就能在帖吧获取用户IP,但也仅仅是获取到了IP,不能获取session、cookie,怎么将IP跟当前登陆的用户ID关联呢?这里,我们就要用到PHP的GD库截屏函数 ,在index.php获取IP后截取屏幕,生成图片时以当前IP命名,生成类似192.168.1.1.jpg 格式的图片,这样查看网站空间里的记录图片就能将IP跟用户ID相对应,实现获取百度贴吧用户IP的目的。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|