Many sites in the user to make a click, such as online shopping confirmation purchase, the user will be asked to enter a verification code, which in general is not a problem, but in the user needs to buy frequently or snapped when it is very annoying. In fact, the site's verification code is usually generated by the JS script, so you can also write your own JS script to implement the verification Code automatic input.
The approximate principle, first of all to observe the original page pop-up verification code picture, here give two examples:, they are the foreground black and white, background color, width 100 high 20 of the picture, further put the picture into the PS open can be found that each number occupies a width of 8 high 10 of the rectangle, and the positions and relative distances of the 5 rectangles are fixed. Therefore, the principle is very simple, in advance for each number and letter to make a unique code table, each code is 80-dimensional 0-1 encoding, 0 means the current number (letter) in this small rectangle is the background, 1 is the foreground, so all the numbers and letters have their own unique code. Each time a new code map randomly generated, as long as the 5 numbers (letters) corresponding to the small rectangle to take out, and then go through the 80 pixels, to get a length of 80 encoding, and then to match the encoding table one by one, you know exactly which number (letter). The code is as follows:
1 var captcha = '; * * Verification code * /2 var canvas = document.createelement (' canvas ');3 canvas.width = ' 100 ';/* Verify code picture Width * /4 canvas.height = ' 20 ';/* Verify code picture Height * /5 canvas.style.display = ' none ';6 document.body.appendChild (canvas);/* Add this section to the page code */7 var context = Canvas.getcontext (' 2d ');8 var image = new Image ();9 image.src = document.getElementById (' Coderefresh '). Src;Ten image.onload = function () { One context.drawimage (image, 0, 0); Afor (var i = 0; i<5; i++) {/* 5-bit verification code, processed in turn * / - var dbstring= "; - var canvasdata= Context.getimagedata (+ 9 * I, 5, 8, 10); /* Above example the coordinates of the upper left corner of the first small rectangle are (27,5), then offset by 9 is the next small rectangle */ the For (Var j= 0;J < CanvasData.data.length; J += 4){ - var R= Canvasdata.data[j+ 0]; - var g= Canvasdata.data[j+ 1]; - var b= Canvasdata.data[j+ 2]; + / * Verify code character only black and white, background color is other RGB values * / - if (! ( (R== 0 && G== 0 && B== 0) | | (R== 255 && G== 255 && B== 255 ))) + dbstring += ' 0 '; A Else at dbstring += ' 1 '; - } - For (var k= 0;k <; k++) {/* Go to Encoding table for matching * / - if (dbstring== Characters[0][k]/* Match success * / - Break ; - } in Captcha += Characters[1][k]; - } to / * Add to Cart * / + var reslut_list= newArray (); - Reslut_list.push (Window.location.pathname.match (/\d+/) [0]); the Reslut_list.push (CAPTCHA); * AddToCart (reslut_list); $ }
Automatic verification code input via JavaScript scripts