javascript - 如何跟踪退出链接

标签 javascript php wordpress

我有一个嵌入视频的网站。每个 iframe 来自不同的网站。 问题是,其中一些将我的访问者重定向到指定的目的地,而无需执行任何操作(单击、悬停等)。现在 Google 将我的网站列为可疑网站。 是否有任何 php 脚本可以跟踪从我的页面到另一个网站的每个退出链接? 假设我正在使用 Wordpress,并且已经创建了 $table_name 跟踪 1-时间戳、2-我的重定向页面以及 3-外部网站/域的目的地。

function the_function() {
// if there is any function
}

if ( the_function() == true // or false )
{
$wpdb->insert($table_name, array(
'timestamp' => $timestamp,
'page' => $my_page_redirected_to_a_different_domain,
'destination'=> $destination,
));
}

或者如果有js脚本也没有问题

最佳答案

无法以一般方式跟踪重定向 - 您必须在处理重定向之前触发一个事件,因此您必须知道这是如何发生的。

为什么?因为 JS 重定向是由浏览器处理的,而不是在服务器端处理的 - 这意味着触发 SQL 插入的唯一方法是了解如何触发重定向。这基本上就是您想要实现的目标:

enter image description here

如何定位重定向

  • 搜索所有出现的 window.location在您的 JS 文件中 - 您也可以搜索已重定向的 URL(所有本地 js 文件您包含的外部文件)
  • 禁用(带注释)外部<iframe>你正在使用。 iframe 可以执行 window.top.location.href重定向主页。
  • 重定向页面的另一种方法是触发 click通过 JS 在链接上发生事件。我想通过在 js 文件中搜索重定向 URL,您也可以找到它。
  • 最后,如果重定向发生在页面加载之前,则可能是 PHP 重定向 - 寻找 header 重定向到您的 php 文件中的 URL 的调用会捕捉到这一点。

发现重定向后可以做什么

  1. 这是一个 JS 重定向 ( window.location )

如果它在本地文件中,如果你想禁用它,你可以只注释它,如果你想保留它但跟踪它,请在 window.location 之前添加此代码调用(它是 jQuery,它将向 /log-redirects.php 发出 AJAX 请求):

$.post( "/log-redirects.php", function( data ) {
  // ADD the window.location line here
});

移动 window.location 非常重要在 AJAX 回调内部调用,因此只有在 ajax 调用完成时才会进行重定向。

如果重定向发生在外部 js 中,除了删除整个 JS 文件之外,您可能无法执行任何操作 - 也许获取 JS 文件内容,删除重定向并将其包含在本地。

您可以尝试的一件事是在 beforeunload 上添加监听器事件 - 尽管您必须对事件对象进行正确的检查,看看它是否是您正在寻找的重定向,因为它会捕获任何卸载事件。

window.addEventListener("beforeunload", function (e) {
  // do something
  return false; // will result to a prompt to the user asking him if he really want to redirect
  // return this only for the redirect you're looking for
});

请注意这个方法doesn't seems to be completely reliable .

  • 来自 <iframe>
  • 您可以添加 sandbox 属性到 iframe 以防止其进行任何重定向。请注意此属性is not supported在 IE9 及更低版本中。

    <iframe src="http://youriframeurl.com/" sandbox=""></iframe>
    
  • 是通过JS触发的点击事件
  • 您可以执行与第一点相同的操作。您只想向链接添加一个监听器(如果它是在 DOM 加载后生成的,则使用 on):

    $('a#mylink').on('click', function(e) {
      // do something
      e.preventDefault(); // add this if you want to cancel the redirection
    });
    
  • 这是一个 header重定向(PHP)
  • 这是一个简单的情况 - 只需在 header 之前添加您想要的代码即可打电话。

    结论

    我建议首先使用beforeunload跟踪重定向的事件 - 执行 console.log(event);可以让您了解重定向的原因。

    祝你好运!

    关于javascript - 如何跟踪退出链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946984/

    相关文章:

    javascript - 下拉列表显示/隐藏 div 的值并保持其状态

    javascript - CRM 2011 删除不需要的菜单条目

    php - 从一个读取并写入第二个excel文件 - PHP

    php - Woocommerce 在管理订单详细信息上显示自定义字段数据

    javascript - 滚动jquery更改html标题标签背景图像

    java - 被攻击的 WordPress 网站

    javascript - 在谷歌图中插入空值

    javascript - JOI如何允许空格和标点符号

    javascript - 使用 php 的 Highcharts 列

    Php 从循环中选中复选框