如何找出哪个父 URL 调用了我的脚本?

How to find out which parent URL called my script?

我在 http://example.com/banner 下创建了一个网页横幅页面,我将这个 link 发送到出版商网站并支付给 运行 它。

但是,有些发布商 运行,有些则不是,我想知道哪个父 URL 调用了此页面或点击来自哪里。通常,他们会将此 URL 放入 iframe 中以提供服务。

(很多页面没有传递引用参数。)

我尝试过使用 JS 和 PHP 的不同方法,但正如您可能猜想的那样,我将 http://example.com/banner 作为父 URL。

有没有办法通过 PHP、JS 或任何其他代码从不同的域了解父 URL?我有一个发布者列表,但我还需要知道哪些网站 运行 在横幅上除了这些网站之外。

为了更清楚这里有一个架构:

MY PAGE WITH BANNER > MY PUBLISHER WEBSITE > USER VISITING THE PUBLISHER

I don't want to get IP of the user visiting my publisher's website or my page's URL. I want to see URL of my publisher's website which is in between.

因为这是我的网络服务器,所以我可以毫无问题地读取访问日志、错误日志等。

我愿意接受任何建议。

谢谢!

您可以试试这个,在您的服务器上托管一个 javascript 文件。

然后他们会把脚本放在他们想要放置横幅的任何地方:

<script src="//yoursite.com/banner.js"></script>

您可以在 URL 中使用参数来提供自定义 js。

然后 从根本上说 代码看起来像下面这样,它将横幅注入 DOM 脚本所在的位置。您从 window.location.href 获取站点 URL,然后在请求图像时将其作为参数发送。 (您也可以使用 cookie 等)

<script>
  // inject an anchoring element
  document.write('<div class="banner_ad"></div>');
  // find it
  var parentDiv = document.getElementsByClassName("banner_ad");
  // create the img/banner, notice the site param
  var banner = document.createElement("img");
  banner.src = 'http://via.placeholder.com/350x150?site=' + encodeURI(window.location.href);

  // loop over the parent elements of each anchoring element
  for (var i = 0, len = parentDiv.length; i < len; i++) {
    // create the link
    var link = document.createElement('a');
    link.appendChild(banner);
    link.setAttribute('title', 'Ads by Foobar');
    link.setAttribute('href', 'http://example.com');
    // inject the link and img
    parentDiv[i].parentNode.appendChild(link);
  }
</script>

然后在服务器端,寻找$_GET['site']参数。

这不是万无一失的,没有什么是。