【问题标题】:How to Simulate Click Redrect Like Human如何像人类一样模拟点击重定向
【发布时间】:2022-01-15 17:46:01
【问题描述】:

我正在做一个项目,但由于缺乏知识而受阻。该代码有效,但我不知道网站 3 是否将其视为被人类点击。

让我解释一下:我总共有 3 个网站。

  • 点击按钮时网站 1 会重定向到网站 2。

  • 网站 2 检查推荐人是否来自网站 1 并自动重定向到网站 3。

我需要重定向(网站 2 -> 网站 3)看起来好像按钮是被人点击的,而不是显示我已自动重定向它。

到目前为止的代码:

if (isset($_SERVER['HTTP_REFERER'])) {
    $url_info = parse_url($_SERVER['HTTP_REFERER']);
    $countCharacter = substr_count($url_info['host'], '.');
    if($countCharacter == 2){
        $eldominio = explode(".", $url_info['host']);
        $elhost = $eldominio[1];
    }else if($countCharacter == 1){
        $eldominio = explode(".", $url_info['host']);
        $elhost = $eldominio[0];
    }

    //if referrer contain $elhost
    if($elhost == 'website1' || $elhost == 'website2'){
        $tieneHostaff = "yes";
    }else{//no host}

} else {  // referrer does not exist 

session_start();
if($tieneHostaff=="yes" && isset($_GET['q']) && !empty($_GET['q'])){
    //Create sessions and delete actual referrer
    $_SESSION['nombre'] = "y";
    $_SESSION['producto'] = $_GET['q'];
    echo "<script>window.location.reload(true);</script>";
    exit();
}

if($_SESSION['nombre'] == "y"){
// Destroy session and redirect to website 3
    session_unset();
    echo "<script>window.location.href = 'https://website3.com/".$_SESSION['producto']."'</script>";
    exit();
}

我需要最后一部分来制作重定向(网站 2 -> 网站 3),就好像它被人点击一样。

在下面的代码中,我得到了它,但我不知道这是最好的方法还是正确的:

if($_SESSION['nombre'] == "y"){
// Destroy session and redirect to website 3
    session_unset();
    echo "<script>window.location.href = 'https://website3.com/".$_SESSION['producto']."'</script>";
    exit();
}

网站 3 检查引荐来源网址和所有内容以发现这是人工点击

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 你能解释一下“看起来像人类点击”的东西是什么意思吗?谁需要意识到这一点?用户,服务器的日志?您不希望用户知道发生了重定向吗?
  • @ChrisHaas 我需要自动从网站 2 重定向到网站 3。网站 3 不必知道它已被自动重定向,它必须看到它就像用户点击了链接并已被重定向到网站 3.
  • 没有“HasClicked”HTTP 标头。 :) 此外,会话 ID 与 HTTP 引用者无关。不建议依赖referer 标头的存在,因为用户(或他们安装的扩展程序)可能已经关闭了浏览器的发送referer 信息。

标签: javascript php redirect web-crawler


【解决方案1】:

理论上,您可以在处理它的元素上发出点击事件,但这可能与您在不使用任何可以执行点击的外部自动化测试工具的情况下获得的一样接近。 PHP 在服务器端执行,而 JavaScript 在客户端执行,因此实际上看起来像是客户端的浏览器触发了而不是应用程序触发了。

<script>
    let elementYouWantToClick = document.getElementById('whatever-the-id-is');
    elementYouWantToClick.click();
</script>

【讨论】:

  • window.location.href 和 click() 有什么区别?
  • @Jesiqa window.location.href 只需更改您正在查看的当前地址,就好像您要将不同的互联网地址放入浏览器的字段中一样。 .click() 将触发绑定到按钮的onClick 事件,实际上会让应用程序执行它应该做的事情,就像用户点击了按钮一样。
猜你喜欢
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
相关资源
最近更新 更多