ÀûÓÃJavaScriptÆƽâÑéÖ¤Âë
¡¡¡¡½üÈÕ£¬ÍøÉϾªÏÖ¿ÉÒÔÆƽâÑéÖ¤ÂëµÄJavaScript½Å±¾¡ª¡ªGreaseMonkey!ÓÉ¡°Shaun Friedle¡±¿ª·¢µÄÕâ¶Î½Å±¾¿ÉÒÔÇáËɸ㶨MegauploadÕ¾µãµÄCAPTCHA¡£Èç¹ûÄú²»ÏàÐŵĻ°£¬¿ÉÒÔµ½Ç××Ô³¢ÊÔÒ»ÏÂ!
¡¡¡¡ÏÖÔÚ£¬MegauploadÕ¾µãÌṩµÄCAPTCHAÔÚÉÏÊö´úÂëÃæÇ°ÒѾ°ÜÏÂÕóÀ´£¬ËµÊµ»°£¬ÕâÀïµÄÑéÖ¤ÂëÉè¼ÆµÄ²»²»Ì«ºÃ¡£µ«¸üÓÐȤµÄÊÇ£º
¡¡¡¡1.HTML 5ÖеÄCanvasÓ¦ÓóÌÐò½Ó¿ÚgetImageData¿ÉÒÔÓÃÀ´´ÓÑéÖ¤ÂëͼÏñÖÐÈ¡µÃÏñËØÊý¾Ý¡£ÀûÓÃCanvas£¬ÎÒÃDz»½ö¿ÉÒÔ½«Ò»¸öͼÏñǶÈëÒ»¸ö»²¼ÖУ¬¶øÇÒÖ®ºó»¹¿ÉÒÔÔÙ´ÓÖÐÖØÐÂÌáÈ¡³öÀ´¡£
¡¡¡¡2.ÉÏÊöµÄ½Å±¾Öаüº¬Ò»¸öÍêȫʹÓÃJavaScriptʵÏÖµÄÉñ¾ÍøÂç¡£
¡¡¡¡3.ʹÓÃCanvas´ÓͼÏñÖÐÌáÈ¡³öÏñËØÊý¾Ýºó£¬½«ÆäËÍÈëÉñ¾ÍøÂ磬ͨ¹ýÒ»ÖÖ¼òµ¥µÄ¹âѧ×Ö·ûʶ±ð¼¼ÊõÀ´ÍƲâÑéÖ¤ÂëÖе½µ×ʹÓÃÁËÄÄЩ×Ö·û¡£
¡¡¡¡Í¨¹ýÔĶÁÔ´´úÂ룬ÎÒÃDz»½ö¿ÉÒÔ¸üºÃµØÀí½âÆ乤×÷ÔÀí£¬Ò²¿ÉÒÔÁì»áÕâ¸öÑéÖ¤Â뾿¾¹ÊÇÈçºÎʵÏֵġ£¾ÍÏñÇ°Ãæ¿´µ½µÄÄÇÑù£¬ÕâÀïʹÓõÄÑéÖ¤Âë²»ÊǺܸ´ÔÓ¡ª¡ªÃ¿¸öÑéÖ¤ÂëÓÐÈý¸ö×Ö·û×é³É£¬Ã¿¸ö×Ö·ûʹÓÃÒ»ÖÖ²»Í¬µÄÑÕÉ«£¬²¢ÇÒֻʹÓÃ26¸ö×ÖĸÖеÄ×Ö·û£¬¶øËùÓÐ×Ö·û¶¼Ê¹ÓÃͬһÖÖ×ÖÌå¡£
¡¡¡¡µÚÒ»²½µÄÓÃÒâºÜÃ÷ÏÔ£¬ÄǾÍÊÇ°ÑÑéÖ¤Â뿽±´µ½»²¼ÉÏ£¬²¢ÇÒ°ÑËüת»¯Îª»Ò¶Èͼ¡£
function convert_grey(image_data){
¡¡¡¡for (var x = 0; x < image_data.width; x++){
¡¡¡¡for (var y = 0; y < image_data.height; y++){
¡¡¡¡var i = x*4+y*4*image_data.width;
¡¡¡¡var luma = Math.floor(image_data.data[i] * 299/1000 +
¡¡¡¡image_data.data[i+1] * 587/1000 +
¡¡¡¡image_data.data[i+2] * 114/1000);
¡¡¡¡image_data.data[i] = luma;
¡¡¡¡image_data.data[i+1] = luma;
¡¡¡¡image_data.data[i+2] = luma;
¡¡¡¡image_data.data[i+3] = 255;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡È»ºó£¬½«»²¼·Ö³ÉÈý¸öµ¥¶ÀµÄÏñËؾØÕó£¬Ã¿¸ö¾ØÕó°üº¬Ò»¸ö×Ö·û¡£ÕâÒ»²½ÊµÏÖÆðÀ´·Ç³£ÈÝÒ×£¬ÒòΪÿ¸ö×Ö·û¶¼Ê¹ÓÃÒ»ÖÖµ¥¶ÀµÄÑÕÉ«£¬ËùÒÔͨ¹ýÑÕÉ«¾Í¿ÉÒÔ½«ÆäÇø·Ö¿ªÀ´¡£
filter(image_data[0], 105);
¡¡¡¡filter(image_data[1], 120);
¡¡¡¡filter(image_data[2], 135);
¡¡¡¡function filter(image_data, colour){
¡¡¡¡for (var x = 0; x < image_data.width; x++){
¡¡¡¡for (var y = 0; y < image_data.height; y++){
¡¡¡¡var i = x*4+y*4*image_data.width;
¡¡¡¡// Turn all the pixels of the certain colour to white
¡¡¡¡if (image_data.data[i] == colour) {
¡¡¡¡image_data.data[i] = 255;
¡¡¡¡image_data.data[i+1] = 255;
¡¡¡¡image_data.data[i+2] = 255;
¡¡¡¡// Everything else to black
¡¡¡¡} else {
¡¡¡¡image_data.data[i] = 0;
¡¡¡¡image_data.data[i+1] = 0;
¡¡¡¡image_data.data[i+2] = 0;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡×îÖÕ£¬ËùÓÐÎ޹صĸÉÈÅÏñËض¼±»ÌÞ³ý³öÈ¥¡£Îª´Ë£¬¿ÉÒÔÏȲéÕÒÄÇЩǰÃæ»òÕߺóÃæ±»ºÚÉ«(δƥÅäµÄ)ÏñËØΧÈƵİ×É«(Æ¥Åä¹ýµÄ)ÏñËØ£¬È»ºó½«Æ¥Åä¹ýµÄÏñËØɾ³ý¼´¿É¡£
var i = x*4+y*4*image_data.width;
¡¡¡¡var above = x*4+(y-1)*4*image_data.width;
¡¡¡¡var below = x*4+(y+1)*4*image_data.width;
¡¡¡¡if (image_data.data[i] == 255 &&
¡¡¡¡image_data.data[above] == 0 &&
¡¡¡¡image_data.data[below] == 0) {
¡¡¡¡image_data.data[i] = 0;
¡¡¡¡image_data.data[i+1] = 0;
¡¡¡¡image_data.data[i+2] = 0;
¡¡¡¡}
¡¡¡¡ÏÖÔÚÎÒÃÇÒѾµÃµ½ÁË×Ö·ûµÄ´óԼͼÐΣ¬µ«ÔÚ½«ÆäÔØÈëÉñ¾ÍøÂç֮ǰ£¬½Å±¾»¹»á½øÒ»²½¶ÔËü½øÐбØÒªµÄ±ßÔµ¼ì²â¡£½Å±¾»áÑ°ÕÒͼÐÎ×î×ó¡¢ÓÒ¡¢ÉÏ¡¢Ï·½µÄÏñËØ£¬²¢½«Æäת»¯ÎªÒ»¸ö¾ØÐΣ¬½Ó×ŰѾØÐÎÖØÐÂת»»ÎªÒ»¸ö20*25ÏñËصľØÕó¡£
cropped_canvas.getContext("2d").fillRect(0, 0, 20, 25);
¡¡¡¡var edges = find_edges(image_data[i]);
¡¡¡¡cropped_canvas.getContext("2d").drawImage(canvas, edges[0], edges[1],
¡¡¡¡edges[2]-edges[0], edges[3]-edges[1], 0, 0,
¡¡¡¡edges[2]-edges[0], edges[3]-edges[1]);
¡¡¡¡image_data[i] = cropped_canvas.getContext("2d").getImageData(0, 0,
¡¡¡¡cropped_canvas.width, cropped_canvas.height);
¡¡¡¡¾¹ýÉÏÃæµÄ´¦Àí£¬ÎÒÃǵõ½ÁËʲôÄØ? Ò»¸ö20*25µÄ¾ØÕó£¬ÆäÖаüº¬µ¥¸ö¾ØÐΣ¬ÆäÖÐÌîÓɺڰ×É«¡£ÕæÊÇÌ«ºÃÁË!
¡¡¡¡È»ºó£¬»á¶ÔÕâ¸ö¾ØÐÎ×ö½øÒ»²½µÄ¼ò»¯¡£ÎÒÃDzßÂÔÐԵشӾØÕóÖÐÌáȡһЩµã£¬×÷Ϊ¡°¹â¸ÐÊÜÆ÷¡±£¬ÕâЩ¹â¸ÐÊÜÆ÷½«ÊäË͵½Éñ¾ÍøÂç¡£¾ÙÀý¶øÑÔ£¬Ä³¸ö¹â¸ÐÊÜÆ÷¾ßÌå¶ÔÓ¦µÄ¿ÉÄÜÊÇλÓÚ9*6λÖÃÏñËØ£¬ÓÐÏñËØ»òÕßûÓÐÏñËØ¡£½Å±¾»áÌáȡһϵÁÐÕâÑùµÄ״̬(Ô¶ÉÙÓÚ¶Ô 20*25¾ØÕóÕû¸ö¼ÆËãµÄ´ÎÊý¡ª¡ªÖ»ÌáÈ¡64ÖÖ״̬)£¬²¢½«ÕâЩ״̬ËÍÈëÉñ¾ÍøÂç¡£
¡¡¡¡Äú¿ÉÄÜÒªÎÊ£¬ÎªÊ²Ã´²»Ö±½Ó¶ÔÏñËؽøÐбȽÏ?ÓбØҪʹÓÃÉñ¾ÍøÂçÂð?ÎÊÌâµÄ¹Ø¼üÔÚÓÚ£¬ÎÒÃÇҪȥµôÄÇЩģÀâÁ½¿ÉµÄÇé¿ö¡£Èç¹ûÄúÊÔ¹ýÇ°ÃæµÄÑÝʾ¾Í»á·¢ÏÖ£¬Ö±½Ó½øÐÐÏñËرȽϱÈͨ¹ýÉñ¾ÍøÂç±È½Ï£¬¸üÈÝÒ׳ö´í£¬¾¡¹Ü³ö´íµÄʱºò²»¶à¡£µ«ÎÒÃDZØÐë³ÐÈÏ£¬¶ÔÓڴ󲿷ÖÓû§À´Ëµ£¬Ö±½ÓµÄÏñËرȽÏÓ¦¸ÃÒѾ¹»ÓÃÁË¡£
¡¡¡¡ÏÂÒ»²½¾ÍÊdz¢ÊÔ²Â×ÖĸÁË¡£Éñ¾ÍøÂçÖе¼ÈëÁË64¸ö²¼¶ûÖµ(ÓÉÆäÖеÄÒ»¸ö×Ö·ûͼÏñ»ñÈ¡¶øÀ´)£¬Í¬Ê±°üº¬Ò»ÏµÁÐÔ¤ÏȼÆËãºÃµÄÊý¾Ý¡£Éñ¾ÍøÂçµÄÀíÄîÖ®Ò»£¬¾ÍÊÇÎÒÃÇÏ£ÍûµÃµÄ½á¹ûÊÂÏȾÍÊÇÖªµÀµÄ£¬ËùÒÔÎÒÃÇ¿ÉÒÔÕë¶Ô½á¹û¶ÔÉñ¾ÍøÂç½øÐÐÏà¹ØµÄѵÁ·¡£½Å±¾×÷Õß¿ÉÒÔ¶à´ÎÔËÐнű¾£¬²¢ÊÕ¼¯ÁËһϵÁÐ×î¼ÑÆÀ·Ö£¬ÕâЩÆÀ·ÖÄÜ°ïÖúµ¹ÍƳö²úÉúËüÃǵÄÄÇЩֵ£¬´Ó¶ø°ïÉñ¾ÍøÂç²Â³ö´ð°¸£¬³ý´ËÖ®Í⣬ÕâЩÆÀ·ÖûÓÐÈκÎÌØÊâÒâÒå¡£
¡¡¡¡µ±Éñ¾ÍøÂç¶ÔÑéÖ¤ÂëÖÐÒ»¸ö×Öĸ¶ÔÓ¦µÄ64¸ö²¼¶ûÖµ½øÐмÆËãÒԺ󣬺ÍÒ»¸öÔ¤ÏȼÆËãºÃµÄ×Öĸ±íÏà±È½Ï£¬È»ºóΪºÍÿ¸ö×ÖĸµÄÆ¥Å䶼¸ø³öÒ»¸ö·ÖÊý¡£(×îºóµÄ½á¹û¿ÉÄÜÀàËÆ£º98%µÄ¿ÉÄÜÊÇ×ÖĸA£¬36%µÄ¿ÉÄÜÊÇ×ÖĸBµÈ¡£)
¡¡¡¡µ±¶ÔÑéÖ¤ÂëÖеÄÈý¸ö×Öĸ¶¼¾¹ý´¦ÀíÒÔºó£¬×îÖյĽá¹ûÒ²¾Í³öÀ´ÁË¡£ÐèҪעÒâµÄÊÇ£¬¸Ã½Å±¾ÎÞ·¨´ïµ½100%ÕýÈ·ÐÔ(²»ÖªµÀÈç¹ûÔÚ¿ªÊ¼µÄʱºò²»½«×Öĸת»»³É¾ØÐΣ¬ÊDz»ÊÇ¿ÉÒÔÌá¸ßÆÀ·ÖµÄ¾«¶È)£¬µ«ÕâÒѾÏ൱ºÃÁË£¬ÖÁÉÙ¶ÔÓÚµ±Ç°µÄÓÃ;À´ËµÊÇÕâÑù¡£¶øÇÒËùÓеIJÙ×÷¶¼ÊÇÔÚ»ùÓÚ±ê×¼µÄ¿Í»§¶Ë¼¼ÊõʵÏÖµÄä¯ÀÀÆ÷ÖÐÍê³ÉµÄ!
¡¡¡¡²¹³ä˵Ã÷һϣ¬Õâ¸ö½Å±¾Ó¦¸ÃËãÊÇÒ»¸öÌØÀý°É£¬ÕâÏî¼¼Êõ¿ÉÄÜ»áºÜºÃµÄ¹¤×÷ÔÚÔÚÆäËü¼òªµÄÑéÖ¤ÂëÉÏ£¬µ«¶ÔÓÚ¸´ÔÓµÄÑéÖ¤ÂëÀ´Ëµ£¬¾ÍÓеã±Þ³¤Äª¼°ÁË(ÓÈÆäÊÇÕâÖÖ»ùÓÚ¿Í»§¶ËµÄ·ÖÎö)¡£µ«Ô¸Óиü¶àÈËÄÜ´ÓÕâ¸öÏîÄ¿ÖÐÊܵ½Æô·¢¶ø¿ª·¢³ö¸üÆæÃîµÄ¶«Î÷À´£¬ÒòΪËüµÄDZÁ¦ÊµÔÚÊÇÌ«´óÁË
¡¡