我使用 curl (PHP) 创建了一些代码,它允许我欺骗引荐来源网址或空白引荐来源网址,然后将用户引导到带有欺骗引荐来源网址的另一个页面。
但是,这样做的缺点是标头中的 IP 地址将始终是我的服务器的 IP,这不是一个有效的解决方案。
问题;
是否可以使用客户端脚本,即(xmlhttprequest)来“更改”引荐来源,然后将用户引导到新页面?
从而保持用户 IP 地址不变,但欺骗引荐来源。
如果是,任何帮助将不胜感激。
谢谢!
我使用 curl (PHP) 创建了一些代码,它允许我欺骗引荐来源网址或空白引荐来源网址,然后将用户引导到带有欺骗引荐来源网址的另一个页面。
但是,这样做的缺点是标头中的 IP 地址将始终是我的服务器的 IP,这不是一个有效的解决方案。
问题;
是否可以使用客户端脚本,即(xmlhttprequest)来“更改”引荐来源,然后将用户引导到新页面?
从而保持用户 IP 地址不变,但欺骗引荐来源。
如果是,任何帮助将不胜感激。
谢谢!
在呈现页面时,不是来自现代浏览器中的 javascript。
更新:请参阅一些手动工具和其他基于 javascript 的平台的评论,在这些平台上,您可以在技术上欺骗引荐来源网址。在似乎与发出网络请求有关的 8 年原始问题的上下文中,答案通常仍然是“否”。
我不打算编辑我所有十年前的答案,尽管如此不赞成投票,但有。对于没有正确预见未来并提供永恒的答案,我提前道歉。
这似乎在 Firefox Javascript 控制台中工作:
var xhr = new XMLHttpRequest;
xhr.open("get", "http://www.example.com/", true);
xhr.setRequestHeader( 'Referer', 'http://www.fake.com/' );
xhr.send();
在我的服务器日志中,我看到:
referer: http://www.fake.com/
有点晚了,但似乎自上次发布以来发生了变化。
在 Chrome 中(可能是目前大多数现代浏览器)不再允许以编程方式更改“引用者”——它现在是静态的。
但是,它确实允许发送自定义标头。例如:
var xhr = new XMLHttpRequest;
xhr.open("get", "http://www.example.com/", true);
xhr.setRequestHeader('CustomReferer', 'http://www.fake.com/');
xhr.send();
在 PHP 中,该标头可以通过“HTTP_(大写标头)”读取:
$_SERVER['HTTP_CUSTOMREFERER'];
这就是我的项目的诀窍......
对于我们中的许多人来说可能是常识,但对于一些希望有所帮助的人!
您可以使用 Fetch API部分修改Referer
标头。
fetch(url, {
referrer: yourCustomizedReferer, // Note: it's `referrer` with correct spelling, and it's NOT nested inside `headers` option
// ...
});
但是,我认为它仅在原始 Referer 标头和您想要的 Referer 标头位于同一域下时才有效。而且它似乎在 Safari 中不起作用。
允许修改Referer
标头是非常出乎意料的,尽管这里有人认为还有其他技巧(例如pushState()
)可以做到这一点。