Проблема в том что по какой то причини сервис антигейта постоянно выдает ошибку ERROR_ZERO_CAPTCHA_FILESIZE. капча лежит в папке скрипта весит в среднем 2-3 кб. обычное изображение капчи. путь в скрипте указан верно до капчи. все передаться. нормально. но ошибка все равно имеется. Пробывал как и jpg, png так и закодированную капчу отправлять. часть кода где капча сохраняется вот Code: if(substr_count($captch[0], 'captcha.php')) { echo 'CH'; preg_match( '/captcha.php\?sid=(.*)&s=1/', $chek , $img ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'm.vseti.by/captcha.php?sid='.$img[1].'&s=1'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_VERBOSE, $m); $res=curl_exec($ch); curl_close($ch); file_put_contents("captcha.jpg", $res); recognize(); А вот сам функция который отправляет капчу на антигейт. отправляю закодированную капчу Code: function recognize( $filename = './captcha.jpg', $apikey = 'мой ключ', $is_verbose = true, $domain="antigate.com/in.php", $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 0, $calc = 0, $min_len = 0, $max_len = 0, $is_russian = 0 ) { if (!file_exists($filename)) { if ($is_verbose) echo "file $filename not found\n"; return false; } $postdata = array( 'method' => 'base64', 'key' => $apikey, 'body' => $captcha, //капча в base64 'phrase' => $is_phrase, 'regsense' => $is_regsense, 'numeric' => $is_numeric, 'calc' => $calc, 'min_len' => $min_len, 'max_len' => $max_len, 'is_russian'=> $is_russian ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://$domain/in.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_VERBOSE, TRUE); $result = curl_exec($ch); if (curl_errno($ch)) { if ($is_verbose) echo "CURL returned error: ".curl_error($ch)."\n"; return false; } curl_close($ch); if (strpos($result, "ERROR")!==false) { if ($is_verbose) echo "server returned error: $result\n"; return false; } else { $ex = explode("|", $result); $captcha_id = $ex[1]; if ($is_verbose) echo "captcha sent, got captcha ID $captcha_id\n"; $waittime = 0; if ($is_verbose) echo "waiting for $rtimeout seconds\n"; sleep($rtimeout); while(true) { $result = file_get_contents("http://$domain/res.php?key=".$apikey.'&action=get&id='.$captcha_id); die(var_dump($result )); if (strpos($result, 'ERROR')!==false) { if ($is_verbose) echo "server returned error: $result\n"; return false; } if ($result=="CAPCHA_NOT_READY") { if ($is_verbose) echo "captcha is not ready yet\n"; $waittime += $rtimeout; if ($waittime>$mtimeout) { if ($is_verbose) echo "timelimit ($mtimeout) hit\n"; break; } if ($is_verbose) echo "waiting for $rtimeout seconds\n"; sleep($rtimeout); } else { $ex = explode('|', $result); if (trim($ex[0])=='OK') return trim($ex[1]); } } return false; } } ?> Вот что в консоле при отправке капчи. http://pixs.ru/showimage/antipng_7438657_14772460.png Вот сохраненная капча. http://pixs.ru/showimage/captchajpg_3926832_14772481.jpg За вознаграждение помогите! второй день туплю уже. 614 504 229 icq
Вот там: $domain="antigate.com/in.php", И потом: curl_setopt($ch, CURLOPT_URL, "http://$domain/in.php"); и в консолке даже видно что скрипт постит в адрес http://antigate.com/in.php/in.php по нормальному антигейт ошибку должен был бы выдать 404. сделайте $domain="antigate.com", PS. еще по нормальному лучше указывать полный путь к файлу, а не $filename = './captcha.jpg'