求讲解一小段php代码,这段代码是怎么【反“防外链图片”】的?原理是什么?

  • 老兵-猫族
    求讲解一小段php代码
    这段代码是怎么【反“防外链图片”】的?原理是什么? 会不会很影响速度?
    用法:http://服务器地址/这个代码的页面.php?p=图片地址

    1. <?php
    2. $p=$_GET['p'];
    3. $pics=file($p);
    4. for($i=0;$i< count($pics);$i++)
    5. {
    6. echo $pics[$i];
    7. }
    8. ?>
    复制代码
  • v
    vr4u
    GET['p'] 是get的啥?得从页面获取吧?获取不到就不能输出了吧~
    我不会写php,只会看
  • y
    yxmr
    首先你得告诉我“防外链图片”的原理是什么。。
  • 老兵-猫族
    回复2#vr4u


    用法:http://服务器地址/这个代码的页面.php?p=图片地址
  • r
    rihkddd
    防外链是根据referer做的,这段PHP的直接在服务端把图片请求了下来,然后传给了前端。
  • y
    yxmr
    百度了一下php的语法,感觉顶楼的那段代码其实就是获取(用户提交的)图片链接对应的(图片)文件,相当于把整个文件都load一下;
    至于这是不是就能【反“防外链图片”】了,取决于“反外链图片”是不是不反这种直接load整个文件的情形。。
  • r
    rihkddd
    看这段代码的写法应该有点历史了,其实这么做也很好防止,一个固定服务器IP一直抓人家的图片,人家直接ban IP不就行了,
  • 老兵-猫族
    回复6#rihkddd


    谢谢,这个方法对于服务器的速度,性能有影响吗?我感觉用这种方式加载图片的速度慢了很多。
  • 老兵-猫族
    回复7#yxmr


    谢谢,这个方法对于服务器的速度,性能有影响吗?我感觉用这种方式加载图片的速度慢了很多。
  • 小粉红的
    浏览器直接请求对方服务器,对方可以通过referer判断是盗链。
    这个做法是自己的服务器去把图片下下来,再发给用户。

    抓个包就知道了。
  • d
    during2
    当然慢了,这个是把防盗链的图片通过服务器file()读到服务器的内存里再通过PHP页面输出到客户。
    而普通外链只要从服务器输出几个文本的。
  • 老兵-猫族
    回复11#rihkddd


    有别的好办法不?
  • y
    yxmr
    直接推荐用户使用不防外链图片的xxx图床,像1024那样。。。
  • 老兵-猫族
    回复15#yxmr


    有好的图床推荐不?用过几个都不太稳定,用用就跑路了。。。。
  • y
    yxmr
    爬墙过去帮你看了一眼
  • 嘻哈小寒
    绕过了referrer限制所以能“破解防盗链”,图床的话,如果自己传图片可以用微博图床,如果是用户传,后端可以接到sm.ms上 iOS fly ~
  • 老兵-猫族
    回复18#嘻哈小寒

    新浪微博吧,新浪微博已经开始限制了,这两天发现的,几个新浪微博图片服务器,有几个已经开始限制了。
  • d
    deadlili
    http://服务器地址/这个代码的页面.php?p=/etc/passwd


    唉 老老实实去阿里买OSS+CDN 或者 七牛
    真没几个钱
  • 老兵-猫族
    回复21#deadlili

    谢谢,小论坛放图片附件用哪种比较好?
  • 老兵-猫族
    回复23#fqxufo

    厉害