Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebScraping-获取由Javascript设置的验证码_Javascript_Web Scraping - Fatal编程技术网

WebScraping-获取由Javascript设置的验证码

WebScraping-获取由Javascript设置的验证码,javascript,web-scraping,Javascript,Web Scraping,这可能是一个微不足道的问题,如果是的话,很抱歉。但我尝试过寻找答案,却找不到令人信服的答案。 我最近访问了一个需要登录的网站,看到它使用以下JS代码设置验证码: function Captcha(){ var alpha = new Array('A','B','C','D',.....,'1',...,'9'); var i; for (i=0;i<4;i++){ var a = alpha[Math.flo

这可能是一个微不足道的问题,如果是的话,很抱歉。但我尝试过寻找答案,却找不到令人信服的答案。
我最近访问了一个需要登录的网站,看到它使用以下JS代码设置验证码:

function Captcha(){
          var alpha = new Array('A','B','C','D',.....,'1',...,'9');
          var i;
          for (i=0;i<4;i++){
          var a = alpha[Math.floor(Math.random() * alpha.length)];
          var b = alpha[Math.floor(Math.random() * alpha.length)];
          var c = alpha[Math.floor(Math.random() * alpha.length)];
          var d = alpha[Math.floor(Math.random() * alpha.length)];
          var e = alpha[Math.floor(Math.random() * alpha.length)];
          var f = alpha[Math.floor(Math.random() * alpha.length)];
          var g = alpha[Math.floor(Math.random() * alpha.length)];
          }
          var code = a + '' + b + '' + '' + c + '' + d + '' + e;
          document.getElementById("mainCaptcha").value = code
函数验证码(){
var alpha=新数组('A'、'B'、'C'、'D'、…、'1'、…、'9');
var i;

对于(i=0;i您可以使用
document.getElementById(“mainCaptcha”).value
检索验证码的值。这是一种非常不安全的验证码实现方式。因此,请做正确的事情,并将此非常糟糕的验证码实现通知网站所有者。

这是使用验证码最不安全的方法,原因是非常简单的验证码用于添加额外的安全层。您可以使用黑客/刮刀无法直接使用的扭曲图像更新您的站点。我建议继续使用最佳做法,或者在您的服务器上生成图像并转发给客户端,或者尝试

或任何其他验证码生成工具


  <html>
     <head>
         <script type="text/javascript">
             function Captcha(){
                 var alpha = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
                 var i;
                 for (i=0;i<6;i++){
                   var a = alpha[Math.floor(Math.random() * alpha.length)];
                   var b = alpha[Math.floor(Math.random() * alpha.length)];
                   var c = alpha[Math.floor(Math.random() * alpha.length)];
                   var d = alpha[Math.floor(Math.random() * alpha.length)];
                   var e = alpha[Math.floor(Math.random() * alpha.length)];
                   var f = alpha[Math.floor(Math.random() * alpha.length)];
                   var g = alpha[Math.floor(Math.random() * alpha.length)];
                  }
                var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
                document.getElementById("mainCaptcha").value = code
              }
              function ValidCaptcha(){
                  var string1 = removeSpaces(document.getElementById('mainCaptcha').value);
                  var string2 = removeSpaces(document.getElementById('txtInput').value);
                  if (string1 == string2){
                    return true;
                  }
                  else{        
                    return false;
                  }
              }
              function removeSpaces(string){
                return string.split(' ').join('');
              }
         </script>    
    </head>
 <body onload="Captcha();">
    <table>
      <tr>
       <td>
             <h3>Text Captcha 'Yashpal Thakur'<h3><br />
       </td>
      </tr>
      <tr>
       <td>
         <input type="text" id="mainCaptcha"/>
          <input type="button" id="refresh" value=" Please Refresh" onclick="Captcha();" />
       </td>
      </tr>
      <tr>
       <td>
        <input type="text" id="txtInput"/>    
      </td>
     </tr>
     <tr>
      <td>
        <input id="Button1" type="button" value="Please Check" onclick="alert(ValidCaptcha());"/>
      </td>
    </tr>
  </table>
</body>
函数Captcha(){ 新阵列的入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入U’、‘V’、‘W’、‘X’、‘Y’、‘Z’; var i;
对于(i=0;我想请你解释一下你有哪些合法理由试图绕过验证码?@CodeGruzzler该网站是我的电信服务提供商的。此外,这个问题只是出于好奇,我想知道是否可能,因为我觉得他们生成验证码的方式不是最好的方式。:)@Shubham12-我认为你前门上的锁不是最好的,所以我想在locksmiths.stackexchange.com上询问如何选择它。只有在我可以向html文档添加代码的情况下,这种方法才有效。我想知道是否可以在外部进行。很显然,你需要某种浏览器模拟。你可以尝试phantom.jsdeveloper控制台应该完成这项工作
  <html>
     <head>
         <script type="text/javascript">
             function Captcha(){
                 var alpha = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
                 var i;
                 for (i=0;i<6;i++){
                   var a = alpha[Math.floor(Math.random() * alpha.length)];
                   var b = alpha[Math.floor(Math.random() * alpha.length)];
                   var c = alpha[Math.floor(Math.random() * alpha.length)];
                   var d = alpha[Math.floor(Math.random() * alpha.length)];
                   var e = alpha[Math.floor(Math.random() * alpha.length)];
                   var f = alpha[Math.floor(Math.random() * alpha.length)];
                   var g = alpha[Math.floor(Math.random() * alpha.length)];
                  }
                var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
                document.getElementById("mainCaptcha").value = code
              }
              function ValidCaptcha(){
                  var string1 = removeSpaces(document.getElementById('mainCaptcha').value);
                  var string2 = removeSpaces(document.getElementById('txtInput').value);
                  if (string1 == string2){
                    return true;
                  }
                  else{        
                    return false;
                  }
              }
              function removeSpaces(string){
                return string.split(' ').join('');
              }
         </script>    
    </head>
 <body onload="Captcha();">
    <table>
      <tr>
       <td>
             <h3>Text Captcha 'Yashpal Thakur'<h3><br />
       </td>
      </tr>
      <tr>
       <td>
         <input type="text" id="mainCaptcha"/>
          <input type="button" id="refresh" value=" Please Refresh" onclick="Captcha();" />
       </td>
      </tr>
      <tr>
       <td>
        <input type="text" id="txtInput"/>    
      </td>
     </tr>
     <tr>
      <td>
        <input id="Button1" type="button" value="Please Check" onclick="alert(ValidCaptcha());"/>
      </td>
    </tr>
  </table>
</body>