1

我目前正在使用 esp8266 构建 wifi 控制的 rgb led 条纹。我想通过网站控制 mcu,所以我的想法是设置一个服务器来托管网站并让 Arduino 定期查询服务器以获取更新(它比这更复杂,但这与这篇文章无关)。

但这就是我的问题所在:Infinityfree(我网站的主机)像大多数其他托管服务提供商一样使用一个简单的反机器人模块(testcookie-nginx-module)来检查客户端是否可以执行 javascript 作为反机器人措施. 客户第一次连接到 infinityfree 网站时,他们会收到以下脚本:

<html>
  <body>
       <script type="text/javascript" src="/aes.js"></script>
     <script>
              function toNumbers(d){
            var e=[];
            d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});
            return e
          }
          function toHex(){
            for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)
            e+=(16>d[f]?"0":"")+d[f].toString(16);
            return e.toLowerCase()
          }
          var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("8382e1a09e24573ac071261dccc8393c");
          document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://thefreshsite.great-site.net/htm/theFreshSite.php?i=1";
      </script>
  
      <noscript>
        This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
      </noscript>
  </body>
</html>

此脚本生成一个字符串并将其作为 cookie 保存在客户端浏览器中。下次客户端连接到网站时,该字符串会作为 http 标头传递给服务器,以便服务器识别客户端并响应网站。然而,由于微控制器不能执行 javascript,它唯一收到的是必须启用 javascript 才能工作的信息。

我做了一些研究,很多其他人也有同样的问题。该问题的常见解决方案是事先在浏览器中生成 cookie,因为 cookie 是静态的(标题键:“Cookie”,标题值:“__test=[THE_CONTENT_OF_YOUR_COOKIE]; expires=Thu, 31-Dec-37 23:格林威治标准时间 55:55; path=/") 您可以将其作为您的 http 请求的标头发送以绕过模块。我使用邮递员测试了此解决方案,但它不起作用。我要么弄乱了标头值,要么错误地使用了邮递员(以前从未使用过它)。

我的饼干:__test=cf2bd8c5785c8e65a8ebd1b58eb666f7; expires=周四,31-Dec-37 23:55:55 GMT;路径=/

邮递员截图:

邮差

我的消息来源:

-https://blog.kwiatkowski.fr/?q=en/testcookie

如果我遗漏了一些明显的东西,我很抱歉,我以前从未在网站上工作过,我仍然需要学习这个项目所需的很多东西。

4

0 回答 0