在Flask或其他Python Web框架中伪造链接点击Referrer是否可行?
伪造Referrer的实现思路与入门示例
可行性说明
可以伪造Referrer,但需区分两种核心场景:后端代理发起的跳转(完全可控)、前端用户点击链接的跳转(受浏览器安全策略限制)。
场景1:Flask后端代理跳转(可靠方案)
通过Flask后端处理跳转请求,由后端主动设置Referrer头后转发请求,目标网站日志会记录你指定的Referrer值。
入门代码示例:
from flask import Flask, redirect import requests app = Flask(__name__) @app.route('/link_1') def fake_referrer_redirect(): target_url = "https://目标网站的地址" # 替换为实际目标链接 fake_referrer = "https://website-b.com" # 要伪造的网站B地址 # 方案1:后端代理请求,返回目标内容(适合API或非页面跳转场景) # response = requests.get(target_url, headers={"Referer": fake_referrer}) # return response.content, response.status_code # 方案2:后端发起重定向,附带自定义Referrer(适合页面跳转,部分浏览器可能覆盖) redirect_resp = redirect(target_url) redirect_resp.headers['Referer'] = fake_referrer return redirect_resp if __name__ == '__main__': app.run(debug=True)
场景2:前端点击跳转(受限方案)
纯前端点击链接的场景下,浏览器默认会将当前页面地址设为Referrer,伪造难度大,且受浏览器Referrer Policy限制:
- 可尝试在页面添加
<meta name="referrer" content="unsafe-url">,但仅能放宽Referrer发送策略,无法自定义具体值 - 通过JavaScript的
fetch/XMLHttpRequest发起请求时手动设置Referrer头,但这属于脚本请求,并非用户真实点击链接的场景
关键提示
- 后端代理是最可靠的伪造方式,请求头完全由后端控制,不受浏览器限制
- 前端方式仅能在有限范围内调整,无法实现任意自定义Referrer
- 部分目标网站会校验Referrer合法性,伪造可能触发反制机制
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

