Referer伪造

postman在发送请求到服务器时因防盗链导致无法通过测试

Posted by Rong on March 20, 2019

我们服务器为了防止他人恶意爬虫和接口嗅探做了防盗链,拦截所有请求,如:查看请求头Referer是否为空,以及其它一些权限限制,开发环境是debug模式,但测试环境是开启了权限认证以及防盗链的,导致做接口查询时一直不能通过。
google发现postman不支持用户在请求头中写入,但是支持代理模式,当用户开启代理模式即可在请求中写入被限制的头,如:

  • Accept-Charset
  • Accept-Encoding
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Connection
  • Content-Length
  • Cookie
  • Cookie 2
  • Content-Transfer-Encoding
  • Date
  • Expect
  • Host
  • Keep-Alive
  • Origin
  • Referer
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade
  • User-Agent
  • Via

详细资料:GitHub postman主页

官方文档说明大致意思是 设置一个代理,让代理服务器修改我们限制的request请求头,组装数据后用py请求数据,再将response返回postman,然后做tests测试。按照提示我按照了python3.6以及用到的库Twisted这个有坑,由于历史原因,python2.7和3.6不能兼容,比如打印print就需要加括号(),而且win下使用脚本很是麻烦,最终的结果是这条路我做了一天没搞通,有没有其它思路?~~
既然是代理,我认为也可以自己用Java实现,将postman的请求全部发送到本地代理服务器上,本地代理组装好数据,加上request的请求头,发送请求到服务器上,将服务器的请求原样输出到postman。。。思路是没问题了,看下服务器端能否伪造referer。

未完待续

参考资料:

  1. Referer伪造,防盗链与反盗链
  2. Referer伪造,防盗链与反盗链相关

撒花★,°:.☆( ̄▽ ̄)/$:.°★