Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

防盗链

阅读数:次 2019-08-06
字数统计: 410字   |   阅读时长≈ 1分

原理

http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。

实现方式

reference

使用apache文件FileMatch限制,在httpd.conf中增加 ( 其实也可以将把下面的语句存成一个.htaccess文件),并放到你的网站的根目录(就是www/html目录)

1
2
3
4
5
SetEnvIfNoCase Referer "^http://kuaishou.com/" local_ref=1  

Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1

rewrite

后台代码中拦截

php:

1
2
3
4
5
6
7
$referer = $_SERVER['HTTP_REFERER']; //HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。  
$selfurl = $_SERVER['HTTP_HOST'];//在php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。
if(false == strpos($referer,$selfurl))
{
echo '非法盗链!';
exit(1);
}

nginx防盗链

1
2
3
4
5
6
7
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www.ttlsa.com/403.jpg;
}
}

临时地址

客户端token,请求得到临时地址;

token关联客户端ip,请求中加入用户ip,地址带上用户地址;

签名才是真实地址;

临时地址生成策略;怎么跟视频地址关联;

使用POST请求

增加盗链难度

时间戳+中心鉴权

时间戳,过期失效

实例

  • CNTV

参考

  • 互联网视频防盗链的研究(referer,Token防盗链)
  • 知乎-视频网站是如何防止被盗链的?
  • 本文作者: Linking
  • 本文链接: https://linking.fun/2019/08/06/防盗链/
  • 版权声明: 版权所有,转载请注明出处!
  • anti-stealing-link
  • CS

扫一扫,分享到微信

Nginx常见问题记录
同一个IP(服务器)多个Tomcat产生session覆盖问题记录
  1. 1. 原理
  2. 2. 实现方式
    1. 2.1. reference
    2. 2.2. rewrite
    3. 2.3. 后台代码中拦截
    4. 2.4. nginx防盗链
    5. 2.5. 临时地址
    6. 2.6. 使用POST请求
    7. 2.7. 时间戳+中心鉴权
  3. 3. 实例
  4. 4. 参考
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN