djtahoma
@djtahoma
PHP Developer

Как получить ответ от is.fssprus.ru используя curl?

На сайте Федеральной службы судебных приставов есть форма "Поиск физических лиц"
Необходимо автоматизировать получение данных.

Форма отправлет Get-запрос такого вида:
http://is.fssprus.ru/ajax_search?callback=jQuery17...


В ответ приходит captcha в base64 и также устанавливается Cookie "connect.sid"

Далее, отправляем второй Get-запрос
http://is.fssprus.ru/ajax_search?system=ip&is[exte...


и получаем результат.
Вручную, через браузер мне удалось эмулировать этот процесс.
Через curl не получается.

Делаю идентично тому, как в браузере:
curl -v is.fssprus.ru/ajax_search?callback=jQuery17206740623963996768_1449497089737&system=ip&is[extended]=1&is[variant]=1&is[region_id][0]=56&is[last_name]=Фамилия&is[first_name]=Имя&is[patronymic]=&is[date]=26.04.1989&nocache=1&_=14494971517


Смотрю, set-cookie в заголовках ответа и подставляю это в след. запрос:
curl -v -b "connect.sid=s%3AarITf4Wqf8n98oFyW8aaJvKA1PR6D8NX.G8vgjpP%2FdHsaLGfi7LKJGtPrEoJdq3yBBlSz0Z%2F3t5w" is.fssprus.ru/ajax_search?system=ip&is[extended]=1&is[variant]=1&is[region_id][0]=56&is[last_name]=Фамилия&is[first_name]=Имя&is[patronymic]=&is[date]=26.04.1989&nocache=1&_=1449497151367&code=ж9нк5


Но почему-то сервер fssprus мою cookie не воспринимает, снова отвечает с параметром "set-cookie" в заголовке и снова предлагает отправить код с captcha.

Как это исправить и получить данные?

На всякий случай прикладываю заголовки:
Первый запрос:
Request:
Host: is.fssprus.ru
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,sk;q=0.2
If-None-Match: W/"rrIXqXtDhA2jo6nfb/7uNg=="

Response:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 09 Dec 2015 13:23:46 GMT
Content-Type: text/javascript; charset=utf-8
Content-Length: 6157
Connection: keep-alive
X-Powered-By: Express
X-Content-Type-Options: nosniff
ETag: W/"IglekMGlnrPHCCkY2VcSYA=="
set-cookie: connect.sid=s%3A_cJAC_zNeCFSoUmQ5SiUDRBylXV9nZah.%2FA0VPnKlsevk9TO6JT%2Fzug8szcNZhNjLgGTIzDq8ZgU; Path=/; HttpOnly

Второй запрос:
Request:
Host: is.fssprus.ru
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,sk;q=0.2
Cookie: connect.sid=s%3A_cJAC_zNeCFSoUmQ5SiUDRBylXV9nZah.%2FA0VPnKlsevk9TO6JT%2Fzug8szcNZhNjLgGTIzDq8ZgU

Response:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 09 Dec 2015 13:28:06 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 17720
Connection: keep-alive
X-Powered-By: Express
X-Content-Type-Options: nosniff
ETag: W/"fBMrBpBzv4ggjQDNZ/pP6Q=="
  • Вопрос задан
  • 1278 просмотров
Решения вопроса 1
misterfil
@misterfil
PHP программист(Full Stack)
Предлагаю вам пример, который поможет решить вашу задачу
Документация по работе с PHP cURL php.net/manual/ru/ref.curl.php
<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile"); 
curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id()); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

curl_setopt($ch, CURLOPT_URL, 'http://example.com/page1.php'); 
$result1 = curl_exec($ch); 

curl_setopt($ch, CURLOPT_URL, 'http://example.com/page2.php'); 
$result2 = curl_exec($ch); 

curl_close($ch); 
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы