CEIDG - Pobieranie danych

0

Witam.

Walczę od kilku dni z pobraniem danych z CEIDG. Mam skrypt, który najpierw pobiera i zapisuje na serwerze obrazki z captchy i wyświetla je u mnie na stronie. User po przepisaniu captchy i wpisaniu nazwy miasta powinien zobaczyć wyniki z CEIDG. Obrazki zapisuje u siebie na FTP, potem ręcznie wpisuję pobrane znaki i robię kolejny request, przesyłając dane POSTem. Niestety za cholerę nie potrafię pobrać tego czego chce bo strona mi tego nie zwraca.

Przy pobieraniu obrazków z captchy pobieram sobie również te parametry i je zapisuję:

preg_match('"<input type=\"hidden\" name=\"ctl00\$hfEnglishWebsiteUrl\" id=\"hfEnglishWebsiteUrl\" value=\"(.*?)\""si', $p, $matches);
$post['ctl00$hfEnglishWebsiteUrl'] = trim($matches[1]);

preg_match('"<input type=\"hidden\" name=\"\_\_VIEWSTATEGENERATOR\" id=\"\_\_VIEWSTATEGENERATOR\" value=\"(.*?)\""si', $p, $matches);
$post['__VIEWSTATEGENERATOR'] = trim($matches[1]);

preg_match('"<input type=\"hidden\" name=\"\_\_VIEWSTATE\" id=\"\_\_VIEWSTATE\" value=\"(.*?)\""si', $p, $matches);
$post['__VIEWSTATE'] = trim($matches[1]);

preg_match('"<input type=\"hidden\" name=\"\_\_EVENTVALIDATION\" id=\"\_\_EVENTVALIDATION\" value=\"(.*?)\""si', $p, $matches);
$post['__EVENTVALIDATION'] = trim($matches[1]);

Potem przy wysyłaniu odpowiedzi robię coś takiego:

$post['__EVENTARGUMENT'] = "";
$post['__EVENTTARGET'] = "";
$post['__VIEWSTATEENCRYPTED'] = "";
$post['ctl00$MainContent$HiddenFieldId'] = "";
$post['ctl00$MainContent$btnSearch'] = "Szukaj";
$post['ctl00$MainContent$hfNewCaptchaVal'] = "d 4 r 5 "; // TUTAJ RĘCZNIE PRZEPISANIA CAPTCHA. SEPARATOR - JEDNA SPACJA
$post['ctl00$MainContent$txtCity'] = "Głogów Małopolski";
$post['ctl00$MainContent$txtCommune'] = "";
$post['ctl00$MainContent$txtCounty'] = "";
$post['ctl00$MainContent$txtEstateNumber'] = "";
$post['ctl00$MainContent$txtFirstName'] = "";
$post['ctl00$MainContent$txtKrs'] = "";
$post['ctl00$MainContent$txtLastName'] = "";
$post['ctl00$MainContent$txtLocalNumber'] ="";
$post['ctl00$MainContent$txtName'] = "";
$post['ctl00$MainContent$txtNip'] = "";
$post['ctl00$MainContent$txtPartnershipNIP'] = "";
$post['ctl00$MainContent$txtPartnershipREGON'] = "";
$post['ctl00$MainContent$txtPkd'] = "";
$post['ctl00$MainContent$txtProvince'] = "";
$post['ctl00$MainContent$txtRegon'] = "";
$post['ctl00$MainContent$txtStreet'] = "";
$post['ctl00$hfAuthRequired'] = "False";
$post['ctl00$stIdleAfter'] = "1200";
$post['ctl00$stMultiTabTimeoutSyncInterval'] = "20";
$post['ctl00$stPollingInterval'] = "60";
$post['ctl00$stWarningLength'] = "30";

$headers = array(
	'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
	'Accept-Encoding: gzip, deflate, br',
	'Accept-Language: pl,en-US;q=0.7,en;q=0.3',
	'Connection: keep-alive',
	'Host: prod.ceidg.gov.pl',
	'Referer: https://prod.ceidg.gov.pl/ceidg/ceidg.public.ui/Search.aspx',
	'Content-Type: application/x-www-form-urlencoded',
	'Content-Length: '.strlen(http_build_query($post))
);

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'https://prod.ceidg.gov.pl/ceidg/ceidg.public.ui/Search.aspx');
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
curl_setopt($c, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt ($c, CURLOPT_COOKIE, $cookies);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$p = curl_exec($c);
curl_close($c);

Do tych danych POST dochodzą też te zapisane wcześniej wartości. W efekcie przy pierwszym wejściu na stronę, przy pobieraniu captchy, zapisuję sobie wszystkie ciasteczka i dane, które są "zmienne". Jak już przepiszę captchę, próbuję wykonać zwrotny request POST, z uzupełnionym już kodem captcha oraz z uzupełnioną miejscowością (Katowice). Niestety, strona nie zwraca mi w ogóle wyników, tylko ponownie sam formularz do uzupełnienia danych.

Co jest nie tak? Próbowałem już wszystkiego, przepisywałem każdy a jeden nagłówek dokładnie tak samo jak na stronie, wykonywałem jakieś zbędne requesty ajaxem, które chyba nic tutaj nie zmieniają, usuwałem całkowicie te nagłówki, wysyłając sam POST. Próbowałem też wysłać niezakodowane wartości z POST (bez urlencode) - też nic. Zrobiłem już dosłownie wszytko co mi przyszło do głowy i siedzę nad tym trzeci dzień i nic...

Ma ktoś jeszcze jakiś pomysł jak to ruszyć ?

Pozdrawiam.

0

Jak pobierasz obrazki captchy?
prześlij na jakiegoś pastebina var_dump($p)

1 użytkowników online, w tym zalogowanych: 0, gości: 1