【问题标题】:Overwrite HTTP REFERER with PHP用 PHP 覆盖 HTTP REFERER
【发布时间】:2022-01-07 07:17:56
【问题描述】:

我正在尝试将自定义值覆盖到 HTTP REFERRER。我使用 javascript 取得了成功,但我的客户想要使用 PHP,我需要帮助将 Javascript 重写为 PHP。

JS 代码:

var reff = ["http://example.com", "http://example.net", "http://example.org"];
var randomreff = reff[Math.floor(Math.random() * reff.length)];
delete window.document.referrer;
window.document.__defineGetter__("referrer", function () {
  return randomreff;
});

document.write(document.referrer);

我正在尝试用 PHP 重写此代码,或者可能会使用 PHP 找到类似的解决方案。我在 PHP 中尝试了多种方法。这些是一些例子。

PHP 尝试 1:

$reff = new Arr("http://example.com", "http://example.net", "http://example.org");
$randomreff = get($reff, call_method($Math, "floor", to_number(call_method($Math, "random")) * to_number(get($reff, "length"))));
_delete(get($window, "document"), "referrer");
call_method(get($window, "document"), "__defineGetter__", "referrer", new Func(function() use (&$randomreff) {
  return $randomreff;
}));

带变量的 PHP :

$var = 'var reff = ["http://example.com", "http://example.net", "http://example.org"];
var randomreff = reff[Math.floor(Math.random() * reff.length)];
delete window.document.referrer;
window.document.__defineGetter__("referrer", function () {
  return randomreff;
});
';

带有标头引用的 PHP :

header("Referer: https://www.example.com/"); 

他们都没有工作。帮助我用 PHP 重写 Javascript 代码或替代解决方案。

【问题讨论】:

  • 客户端上的 PHP 或服务器上的 JS 在 PHP 进程中如何工作?我希望只有标题才能工作
  • @mplungjan 我知道 PHP 是服务器端,但我在 google 上找到了。也可以使用 PHP 将自定义值传递给 HTTP Referer,但我没有得到有效的解决方案
  • @freedomn-m 使用 $refer = "http://example.com" 不会更改 HTTP REFERER 请求。
  • @freedomn-m 为某些附属和广告目的更改推荐人

标签: javascript php html jquery http-referer


【解决方案1】:

您将无法仅使用 PHP 来执行此操作。 document.referrer 是一个 DOM 属性,当页面加载时,浏览器通过读取请求中的 referrer 标头来设置它。由于请求是由浏览器生成的,因此您无法用 PHP 真正触摸它,因为它是在服务器上而不是在浏览器中执行的,如果您想在浏览器中执行某些内容,则需要 javascript。

在您的示例中,您似乎只是试图从 PHP 运行 javascript 代码,但这不起作用。设置referrer-header 的最后一个示例将在服务器返回的响应中设置它,但正如我所说,referrer 是一个请求变量,因此它将被忽略。

您可以从 PHP 做的唯一事情是告诉浏览器再次重定向到页面(通过设置 location-header),但据我所知,这些天这不会重置 referral -header(如果是这样,那么例如从 http 重定向到 https 会一直丢失它)。

我不确定您是否要在这里完成。设置document.referrer 只对当前页面有效,不会影响下一页看到的内容。如果提早执行,它最多可能会欺骗一些跟踪脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2011-02-19
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多