我有一个嵌入视频的网站。每个 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 插入的唯一方法是了解如何触发重定向。这基本上就是您想要实现的目标:
如何定位重定向
- 搜索所有出现的
window.location
在您的 JS 文件中 - 您也可以搜索已重定向的 URL(所有本地 js 文件和您包含的外部文件) - 禁用(带注释)外部
<iframe>
你正在使用。 iframe 可以执行window.top.location.href
重定向主页。 - 重定向页面的另一种方法是触发
click
通过 JS 在链接上发生事件。我想通过在 js 文件中搜索重定向 URL,您也可以找到它。 - 最后,如果重定向发生在页面加载之前,则可能是 PHP 重定向 - 寻找
header
重定向到您的 php 文件中的 URL 的调用会捕捉到这一点。
发现重定向后可以做什么
- 这是一个 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/