антикапча и base64

Discussion in 'PHP' started by ChikiSt, 19 Jul 2011.

  1. ChikiSt

    ChikiSt New Member

    Joined:
    28 Jun 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Нужно отправить капчу
    POST to http://antigate.com/in.php
    следующие поля:
    method => base64
    key => 2595b47679d8f01ffb87782e5655b555
    body => CAPCHA_FILE_HERE_ENCODED_BASE64 ( + UUENCODE ! )
    ext => FILE_EXTENSION
    Объясните пожалуйста как правильно это сделать, а еще лучше подправьте код.
    Вот как я пытаюсь отправить файл....

    Получаю файл капчи в Base64
    HTML:
    var canvas = document.createElement('canvas'); 
    canvas.width = "200";
    canvas.height = "50";
    var context = canvas.getContext('2d');
    var img = new Image();  
    img.onload = function(){
    	context.drawImage(img, 0, 0);
    }
    img.src='....captcha.png';
    var b64 = canvas.toDataURL("image/png");
    содержимое
    Code:
    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAyCAYAAAAZUZThAAASWklEQVR4Xu2dd6hdxRPHN7bYjbF3jUnsvWCvKcYYsUtUEHtsqIiooFhQSUAFYxcMwT+iosHee9fYe2+x997L++WzP+ay99zds7Pn7Hk36ls4vJv39u7ZMt+Z78zsbvoZY3pmPH2lbwb6ZsAzA/0AyFZbbWX69evX8VCf388yyyz2q746/C6lHm253wm9N1e9mblvMg8pY42tQ0pbTa5DUWa+/fZb8/nnn9vns88+s498/vTTT+3nP//8szZIee8iiyxibr/9dvuTopkTVw5ljhdYYAHTAkhOEOQGlba92ESkgEX7Tm29WN+0YGliDHX79sMPP5gvvvjCPgj+l19+2QYEfv/777/XFn7maKGFFjJLLLGEfRZffHGz5JJL2s9LLbWUffj7zz//bH8Wla8WLFJv/vnn/z9Att5660a1uhZ8v/zyi51gtM1PP/1k/vjjD4v+ueaay4BmNAITom1PM0Hatpqu99dff5nZZ5+9tagaIGjqpFr4IuARNgQeIZeffEbjCyh+/fXX2sJPAwMGDLDCvthii7UAIGCYZ5557Lp/9913th/u4/btm2++MQsuuKB5/vnno6wnphi8AIl9SavptPUY0Pvvv28++OADO/hYod2dd97ZTmJMe+egI99//70FLPOCVppvvvmCdLQ4dzFQvf3223bcs846qxUIhGDRRRe1CsFn8jWAT6Gsv/32mxW0r776yit0CB5KK0dh3lgzHjQ/D4I855xzmtlmm8309PTY9f/66687+kT/UugX8/7uu+/aeY3JSJkC6QCIb1Fii1zUYn///bdBoxQFqWjeXn/9dfP0009XnvtDDz20g1uymLT7ySef2Id+MPGMAe2EBRo8eLBZZZVVWt8NARkN+dJLL1lNSTtQBMBCO3x/9dVXt4usFUgG+tRTT5lp06aZ9957z1pH6Rv9YzHXXXdds+aaa5o11ljDCo60LXN3yimnWAu6wQYb2Ke4Xi5AaR9hQ7hcoXPBgJXOUeaee24LbIR/4YUXtmsvgk8fEW5oGO92n1yWxx0DczBw4EBz77332p8ahR+SeyvDUKxtttkmao5iSMQUP/7443YiaHjEiBFBpx7BuPLKK2utzWGHHWbbB5AI8auvvmof2o6Veeed14wcOdIMHTq0o4+098IL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
    теперь, на сколько я понял ине нужно закодировать base64 в UUENCODE . Как это сделать я не знаю, гугл не помог.

    пытаюсь отправить содержимое в base64
    HTML:
    var fd = new FormData();
    fd.append("method", "base64");
    fd.append("key", "2595b47679d8f01ffb87782e5655b555");
    fd.append("body", file);
    fd.append("ext", "png");
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://antigate.com/in.php", true);
    	xhr.onreadystatechange=function() 
    		{
    		if(xhr.readyState == 4) 
    			{
    			if (xhr.status == 200) {
    			//console.log(xhr.responseText);
    			alert(xhr.responseText);
    			}
    			else alert("Ошибка обработки запроса!");
    			}
    		}
    xhr.send(fd);
    ошибка ERROR_WRONG_FILE_EXTENSION.

    Помогите пожалуйста :confused:
     
    #1 ChikiSt, 19 Jul 2011
    Last edited: 20 Jul 2011
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    http://phpjs.org/functions/convert_uuencode:769
     
  3. ChikiSt

    ChikiSt New Member

    Joined:
    28 Jun 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    попрбовал
    var file=convert_uuencode(b64);

    В консоли Хрома ошибка
    Uncaught TypeError: Object [object DOMWindow] has no method 'is_scalar'
     
  4. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    ext должен равняться jpg, gif или png.
     
  5. ChikiSt

    ChikiSt New Member

    Joined:
    28 Jun 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    добавил функции

    HTML:
    function is_scalar (mixed_var) {
        return (/boolean|number|string/).test(typeof mixed_var);
    }
    HTML:
    function convert_uuencode(str){
    
        var char = function(c) {
            return String.fromCharCode(c);
        };
     
    
        if(!str || str=="") {
            return char(0);
        } else if(!is_scalar(str)) {
            return false;
        }
    
        var c = 0, u = 0, i = 0, a = 0
        var encoded = "", tmp1 = "", tmp2 = "", bytes = {};
    
        // divide string into chunks of 45 characters
        var chunk = function() {
            bytes = str.substr(u, 45);
            for(i in bytes) {
                bytes[i] = bytes[i].charCodeAt(0);
            }
            if(bytes.length != 0) {
                return bytes.length;
            } else {
                return 0;
            }
        };
            
        while(chunk() !== 0) {
            c = chunk();
            u += 45;
    
            // New line encoded data starts with number of bytes encoded.
            encoded += char(c+32);
    
            // Convert each char in bytes[] to a byte
            for(i in bytes) {
                tmp1 = bytes[i].charCodeAt(0).toString(2);
                while(tmp1.length < 8) {
                    tmp1 = "0" + tmp1;
                }
                tmp2 += tmp1;
            }
    
            while(tmp2.length % 6) {
                tmp2 = tmp2 + "0";
            }
    
            for(i=0; i<=(tmp2.length/6)-1; i++) {
                tmp1 = tmp2.substr(a, 6);
                if(tmp1 == "000000") {
                    encoded += char(96);
                } else {
                    encoded += char(parseInt(tmp1, "2")+32);
                }
                a += 6;
            }
            a = 0, tmp2 = "";
            encoded += "\n";
        }
        encoded += char(96)+"\n";
    
        return encoded;
    }
    ошибка ERROR_IMAGE_IS_NOT_PNG