如何跟踪退出链接

时间:2015-10-05 11:01:00

标签: javascript php wordpress

我有一个嵌入视频的网站。每个iframe来自不同的网站。 问题是其中一些人将访问者重定向到他们指定的目的地而没有动作(点击,悬停等)。现在谷歌将我的网站列为可疑。 是否有任何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脚本,没问题

1 个答案:

答案 0 :(得分:2)

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

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

enter image description here

如何找到重定向

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

找到重定向时可以执行的操作

  1. 这是一个JS重定向(window.location
  2. 如果它在本地文件中,您只需要对其进行评论即可,如果您想保留它但是跟踪它,请在window.location电话之前添加此代码(&& #39; s 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事件上添加一个监听器 - 尽管你必须对事件对象进行正确的检查以确定它是否是你的重定向&# 39;重新寻找,因为它会抓住任何卸载事件。

    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

    1. 来自<iframe>
    2. 您可以将sandbox属性添加到iframe,以防止它进行任何重定向。请注意,IE9及更低版本中的此属性is not supported

      <iframe src="http://youriframeurl.com/" sandbox=""></iframe>
      
      1. 这是通过JS触发的点击事件
      2. 你可以做与第一点相同的事情。您只想在链接中添加一个侦听器(如果在加载DOM后生成它,则使用on):

        $('a#mylink').on('click', function(e) {
          // do something
          e.preventDefault(); // add this if you want to cancel the redirection
        });
        
        1. 它是header重定向(PHP)
        2. 这很简单 - 只需在header来电之前添加您想要的代码。

          结论

          我建议先使用beforeunload事件来跟踪重定向 - 执行console.log(event);可以为您提供有关重定向原因的一些见解。

          祝你好运!