Получение капчи курл

12
FD
На сайте с 12.05.2017
Offline
71
4980

Добрый день. Необходимо получать информацию с сайта http://www.gibdd.ru/check/auto/ , загвоздка в капче. Может быть кто подскажет, как сделать так что бы на моем сайте пользователю сделавшему запрос выводилась капча, он ее вводил и дальше отправлялся запрос с введенной капчей на сайт http://www.gibdd.ru/check/auto/ для получения данных. Спасибо

НАКРУТКА INSTAGRAM (https://instagram777.ru) - Смешные цены!
MT
На сайте с 17.01.2017
Offline
22
#1

Нанять программиста, поставить ему задачу и вуа-ля, всё готово!

FD
На сайте с 12.05.2017
Offline
71
#2

Актуально, подскажите пож

[umka]
На сайте с 25.05.2008
Offline
456
#3

Всё просто.

Берёте капчу с одного сайта, показываете пользователю на другом сайте, получаете ввод от пользователя, и передаёте обратно на первый сайт.

Если вы хотите, чтобы вам что-то подсказали, задайте конкретный вопрос.

Покажите, что вы уже сделали, и в чём именно проблема.

Вариант "сделайте всё за меня" — вряд ли прокатит.

Лог в помощь!
FD
На сайте с 12.05.2017
Offline
71
#4
'[umka:
;15311615']Всё просто.
Берёте капчу с одного сайта, показываете пользователю на другом сайте, получаете ввод от пользователя, и передаёте обратно на первый сайт.

Если вы хотите, чтобы вам что-то подсказали, задайте конкретный вопрос.
Покажите, что вы уже сделали, и в чём именно проблема.
Вариант "сделайте всё за меня" — вряд ли прокатит.

Вот в этом и вопрос, скачиваю капчу, показываю со своего сервера пользователю, он вводит, курл отправляет пост запрос с этой капчей, но ответ что капча неверна или устарела.

[umka]
На сайте с 25.05.2008
Offline
456
#5

Cookie не забываете сохранять/передавать?

FD
На сайте с 12.05.2017
Offline
71
#6
'[umka:
;15311881']Cookie не забываете сохранять/передавать?

Нет не забываю. Возможно все из за сессий. Незнаю...

FD
На сайте с 12.05.2017
Offline
71
#7

<?php 
if($_GET['vinValue']||$_GET['captchaValue']) {


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://vin01.ru/api.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($curl, CURLOPT_COOKIEFILE, '/cok.txt');
curl_setopt($curl, CURLOPT_POSTFIELDS, array (
'captchaValue'=>$_GET['captchaValue'],
'vinValue'=>$_GET['vinValue'],
'typeCheckValue'=>'history' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
));
$out = curl_exec($curl);
echo $out;


}

else {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://vin01.ru/api.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cok.txt'); // сохранять куки в файл
curl_setopt($curl, CURLOPT_COOKIEFILE, '/cok.txt');
curl_setopt($curl, CURLOPT_POSTFIELDS, "getCaptcha=true");
$out = curl_exec($curl);



$obj=json_decode($out);

echo '<img src='.$obj->image.'>';
echo '
<form action="" method="get">
<p>vin: <input type="text" name="vinValue" /></p>
<p>captcha: <input type="text" name="captchaValue" /></p>
<p><input type="submit" /></p>
</form>';
}
?>

Ответ приходит "Прошло слишком много времени с момента загрузки картинки, повторите попытку" . Незнаю что это значит, неверная капча или еще чего. Но факт в том что капча не проходит!

---------- Добавлено 30.10.2017 в 22:06 ----------

'[umka:
;15311881']Cookie не забываете сохранять/передавать?

вот мой код. Пробовал отдавать картинку со своего сервера, также и куки передавать. Ничего не выходит

tommy-gung
На сайте с 22.11.2006
Offline
294
#8

открою секрет, код с картинки привязывается к токену\сессии

нужно всего лишь повторить все, как браузер отправляет\принимает запросы

Здесь не могла быть ваша реклама
[umka]
На сайте с 25.05.2008
Offline
456
#9

Если это окончательная редакция вашего сообщения, то здесь, как минимум:

1. Получаются разные пути к файлам для сохранения куки при получении капчи (CURLOPT_COOKIEJAR) и при обратной отправке (CURLOPT_COOKIEFILE)

2. Во время обратной отправки вы сбрасываете сессионные куки (CURLOPT_COOKIESESSION, TRUE)

FD
На сайте с 12.05.2017
Offline
71
#10

Изменил немного код, беру теперь данные напрямую с сайта гибдд, запрос уходит но скрипт зависает =)) и ответа соответственно нет:

<?php 

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://check.gibdd.ru/proxy/captcha.jpg');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);

curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cok.txt'); // сохранять куки в файл
curl_setopt($curl, CURLOPT_COOKIEFILE, '/cok.txt');
$out = curl_exec($curl);

file_put_contents('captcha.jpg',$out);

if($_GET['vinValue']||$_GET['captchaValue']) {



curl_setopt($curl, CURLOPT_URL, 'http://check.gibdd.ru/proxy/check/auto/history');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_COOKIEFILE, '/cok.txt');
curl_setopt($curl, CURLOPT_POSTFIELDS, array (

'vin'=>$_GET['vinValue'],
'captchaWord'=>$_GET['captchaValue'],
'checkType'=>'history'
));
$out = curl_exec($curl);
curl_close($curl);
echo $out;


}

else {

echo '
<img class="pull-left captcha-img" src="/captcha.jpg">
<form action="" method="get">
<p>vin: <input type="text" name="vinValue" /></p>
<p>captcha: <input type="text" name="captchaValue" /></p>
<p><input type="submit" /></p>
</form>';
}
?>


---------- Добавлено 30.10.2017 в 22:44 ----------

'[umka:
;15314006']Если это окончательная редакция вашего сообщения, то здесь, как минимум:
1. Получаются разные пути к файлам для сохранения куки при получении капчи (CURLOPT_COOKIEJAR) и при обратной отправке (CURLOPT_COOKIEFILE)
2. Во время обратной отправки вы сбрасываете сессионные куки (CURLOPT_COOKIESESSION, TRUE)

Куки в одно место сохраняются и берутся от туда же. При любых раскладах возвращает что капча неверная.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий