【问题标题】:How to get all client info from website visitors?如何从网站访问者那里获取所有客户信息?
【发布时间】:2020-10-16 22:49:31
【问题描述】:

我想在有人访问网页时收集我们可以收集的所有信息:例如:

clients screen resolution: <script type='text/javascript'>document.write(screen.width+'x'+screen.height); </script>
referer: <?php print ($_SERVER['HTTP_REFERER']); ?>
client ip: <?php print ($_SERVER['REMOTE_ADDR']); ?>
user agent:  <?php print ($_SERVER['HTTP_USER_AGENT']); ?>

还有什么?

【问题讨论】:

    标签: networking


    【解决方案1】:

    这些是基本信息。超出此范围的任何内容都可能被视为类似间谍软件,隐私倡导者将 [理所当然地] 不赞成。

    从您的用户那里获取更多信息的最佳方式是询问他们,将这些字段设为可选,并告知您的用户您将使用这些信息的确切用途。你会给他们寄一份时事通讯吗?

    如果您打算向他们发送电子邮件,那么您必须使用“确认选择加入”的方法——征得他们的同意(通过让他们回复一封电子邮件,键入一个特殊的秘密唯一号码,确认他们是首先授予您向他们发送时事通讯或您计划发送给他们的任何通知的权限。

    只要您预先了解您计划如何使用这些信息,并让用户选择决定您如何使用它(这些选项默认情况下都应该是“您没有权限”),您可能会获得更多愿意信任您并为您提供更优质信息的用户。对于那些不想透露任何关于自己的个人信息的人,不要浪费时间试图获取它,因为他们中的许多人都会采取措施防止这种情况发生并隐藏(这是他们的权利)。

    【讨论】:

      【解决方案2】:

      用这个小PHP获取客户端机器的所有信息:

      <?php
      foreach($_SERVER as $key => $value){
      echo '$_SERVER["'.$key.'"] = '.$value."<br />";
      }
      ?>
      

      【讨论】:

      • 这是服务器信息,不是客户端!
      • @ViaSat 部分如$_SERVER["REMOTE_ADDR"] 包含客户端数据
      • print_r($_SERVER);代替foreach(){...}
      【解决方案3】:

      可用于 PHP 的列表位于 here

      如果您需要更多详细信息,您可能需要考虑使用Browserhawk

      【讨论】:

        【解决方案4】:

        为了什么目的?

        请记住,客户端 IP 现在几乎没有意义了。来自同一代理或同一 NAT 点的所有用户将具有相同的客户端 IP。多年过去了,所有 AOL 流量都来自几个代理,尽管现在实际的 AOL 用户可能会被代理超过 :)。

        如果您想唯一标识一个用户,很容易在 apache (mod_usertrack) 或您使用的任何框架中创建一个 cookie。如果此人阻止了 cookie,请尊重这一点,并且无论如何都不要尝试跟踪它们。或者吸取 Google 的教训,让它变得如此有用,人们会选择实用程序而不是担心 cookie。

        请记住,Javascript 在客户端上运行。您的 document.write() 将在他们的网页上显示信息,而不是为您的服务器做任何事情。您可能希望使用 Javascript 将此信息放入 cookie 中,或者如果您有任何表单,则与表单提交一起存储。

        【讨论】:

          【解决方案5】:
          phpinfo(32);
          

          打印包含全部可提取信息的表格。您可以简单地将变量直接复制并粘贴到您的 php 代码中。

          例如:

          _SERVER["GEOIP_COUNTRY_CODE"]   AT
          

          将在 php 代码中:

          echo $_SERVER["GEOIP_COUNTRY_CODE"];
          

          【讨论】:

            【解决方案6】:

            我喜欢用这样的东西:

            $log = array(
              'ip' => $_SERVER['REMOTE_ADDR'],
              're' => $_SERVER['HTTP_REFERER'],
              'ag' => $_SERVER['HTTP_USER_AGENT'],
              'ts' => date("Y-m-d h:i:s",time())
            );
            
            echo json_encode($log);
            

            您可以将该字符串保存在一个文件中,JSON 非常小,只有一行。

            【讨论】:

              【解决方案7】:

              获取 $_SERVER 变量的所有输出:

              <?php
              $test_HTTP_proxy_headers = array('GATEWAY_INTERFACE','SERVER_ADDR','SERVER_NAME','SERVER_SOFTWARE','SERVER_PROTOCOL','REQUEST_METHOD','REQUEST_TIME','REQUEST_TIME_FLOAT','QUERY_STRING','DOCUMENT_ROOT','HTTP_ACCEPT','HTTP_ACCEPT_CHARSET','HTTP_ACCEPT_ENCODING','HTTP_ACCEPT_LANGUAGE','HTTP_CONNECTION','HTTP_HOST','HTTP_REFERER','HTTP_USER_AGENT','HTTPS','REMOTE_ADDR','REMOTE_HOST','REMOTE_PORT','REMOTE_USER','REDIRECT_REMOTE_USER','SCRIPT_FILENAME','SERVER_ADMIN','SERVER_PORT','SERVER_SIGNATURE','PATH_TRANSLATED','SCRIPT_NAME','REQYEST_URI','PHP_AUTH_DIGEST','PHP_AUTH_USER','PHP_AUTH_PW','AUTH_TYPE','PATH_INFO','ORIG_PATH_INFO','GEOIP_COUNTRY_CODE');
                  foreach($test_HTTP_proxy_headers as $header){
                      echo $header . ": " . $_SERVER[$header] . "<br/>";
                  }
              ?>
              

              【讨论】:

                猜你喜欢
                • 2014-09-16
                • 1970-01-01
                • 1970-01-01
                • 2014-11-18
                • 2012-12-04
                • 1970-01-01
                • 2019-03-29
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多