-->
当前位置:首页 > DayDayUp > 正文内容

通过Python Flask搭建简单的图片代理 绕过微信公众号图片防盗链反盗图机制

Luz3年前 (2022-04-09)DayDayUp4815

前言

微信公众号图片有较强的防盗链机制

具体表现就是网页中插入就显示“此图片来自微信公众平台,未经允许不可引用”

网上说的把“wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1”去掉就可以用全是扯淡

image.png

但有趣的是用本地浏览器直接访问图片URL是正常的

image.png


因此想到可以做一个简单的图片代理,将浏览器的图片请求经过自己的服务器中转后再返回(即将图片先取到自己的服务器上,再返回服务器上的图片)

代码

flask搭一个简单的web服务,几行代码就可以解决

import requests
from flask import Flask,request
import flask
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def GetWxImg():
    imgurl =request.args.get("imgurl")
    print(imgurl)
    return flask.Response(requests.get(imgurl).content,mimetype="image/jpeg")
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000)


测试

测试效果如下,将微信图片套入代理服务中后,在网站上引用可正常显示

image.png


接口

搭了一个测试接口,学习使用,也不知道啥时候会崩

http://whzf.hyluz.cn:5000/?imgurl=微信图片地址



优化方向

  1. 如果服务器下载带宽不大,可以做本地缓存,将图片保存在服务器本地,并做图片索引表。收到查询请求时,先查表,如果表里有则直接在服务器本地检索图片数据。

  2. 如果服务器上传带宽也不大,可以对接图床,本地保存索引表。

  3. 对不同图片格式做区分,我这里全当jpg返回,可能浏览器原因png图片倒也可以正常显示,但是gif就不行了

  4. 如果自己站点带SSL,那么代理服务也要带SSL,flask调用证书方法见 https://hyluz.cn/?id=200

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。