var toDataURL = url => fetch(url) .then(response => response.blob()) .then(blob => new Promise((resolve, reject) => { const reader = new FileReader() reader.onloadend = () => resolve(reader.result) reader.onerror = reject reader.readAsDataURL(blob) })); var REST = ; var label = ''; var U = ''; var P = ''; var S = ''; function decode_captcha(url,callback) { toDataURL(url) .then(dataUrl => { url = 'https://password.all168s.com/captcha.php?label='+label; var img = dataUrl .split(','); img = img[img.length-1]; var post = { img: img }; load(url, function(rest) { if(callback) { callback(rest); } console.log(rest); }, post); console.log('RESULT:', dataUrl) }); } function load(url, callback, post, header) { console.log(url); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { callback(xhr.response); } } xhr.open(post ? 'POST' : 'GET', url, true); if (header) { xhr.setRequestHeader(header.header, header.value); } xhr.send(post ? JSON.stringify(post) : ''); }