Wyciąganie danych z gusu (nowa wersja) - regon/nip

0

Witam,

Ma ktoś może gotowe skrypty do wyciągania danych z nowej wersji gusu? Chodzi mi o nip/regon przez php.
Jeżeli nie to chociaż jakiś wskazówki jak się za to zabrać, na razie firebugiem próbowałem debugować, ale mało rozumiem.

Pozdrawiam,
Darej

0

"próbowałem debugować" to znaczy co robiłeś?

  1. Umiesz korzystać z zakładki Sieć w Firebugu?
  2. Umiesz wysłać żądanie POST z poziomu php?

PS. Gotowca wykonam na zlecenie, jak coś ktoś to pisać pm.

0

Poczytaj o cURL jeśli nie rozumiesz to zapłać komuś. Lub poczytaj o JSON jesli dane są wczytywane asynchronicznie przez Jave Script (łatwo to sprawdzić wyłącz Jave Script w przeglądarce i sprawdź czy dalej się będzie wyświetlało.)

0

A inne pytanie czy można pobrać dane po regon/nip bez captcha? Ma ktoś jakies informacje na ten temat?

0

Można, jakaś firma udostępnia płatne API.

A generalnie po to jest captcha, żeby była - właśnie dla takich zawodników piszących boty

0

A nie wiesz to płatne API? To oni mają jakąś umowę z GUS? Czy na jakiej zasadzie to działa?

0

Nie pamiętam nazwy, ale w Google znajdziesz.
Nie wiem czy mają umowę czy coś - najlepiej ich zapytaj, skąd ja mam to wiedzieć?
Być może łamią captchę - ale tutaj GUS zbyt sprawnie by wyłapał mimo wszystko taką ilość requestów nawet z poprawną captchą - chyba, że mają botnet, ale wątpię, żeby prowadzili wątpliwą prawnie działalność.

BTW: Jeżeli budujesz narzędzie na wielką skalę to uważaj - pisanie takich automatów może być podciągnięte pod jakiś paragraf (o łamaniu zabezpieczeń i zakłócaniu pracy systemów komputerowych). Lepiej skonsultuj się bezpośrednio z GUS - a nuż mają jakieś API?

0

Wysłałem maila do GUS i czekam na odpowiedz. Rozmawiałem z kolegami z pracy i z tego co mi mówią to próba łamania captchy jest bez sensu. Stracę tylko czas.

0

Tak na szybko napisałeś coś takiego:

klasa używa do łączenia się przez curla tego wrappwera:
https://github.com/php-curl-class/php-curl-class

 
       require './Curl/Curl.php';
       
       use \Curl\Curl;
       
        /**
        * @author john zuk <[email protected]>
        * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
        */
       class Gus
       {
           
           private $captachFileName = 'captach.jpeg';
           
           private $loginUrl = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/Zaloguj';
           
           private $getCaptachUrl = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/PobierzCaptcha';
           
           private $checkCaptachUrl = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/SprawdzCaptcha';
           
           private $searchDataUrl = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/daneSzukaj';
           
           private $getComplexDataUrl = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/DanePobierzPelnyRaport';
           
           private $loginData = array("pKluczUzytkownika" => "aaaaaabbbbbcccccdddd");
           
           public function __construct()
           {
               session_start();
           }
           
           public function login()
           {
                $_SESSION['time'] = time();
                $curl = new Curl();
                $curl->setHeader('Content-Type', 'application/json');

                $curl->post($this->loginUrl, json_encode($this->loginData));

                $_SESSION['sid'] = $curl->response->d;

                $curl->close();
           }
           
           public function getCaptach()
           {
               $curl = new Curl();
               $curl->setHeader('Content-Type', 'application/json');
               $curl->setHeader('sid', $_SESSION['sid']);
               $curl->post($this->getCaptachUrl, '');

               $image = fopen($this->captachFileName,'w+');
               fwrite($image, base64_decode($curl->response->d));
               fclose($image);
               
               $curl->close();
               
           }
           
           public function checkCaptach($captach)
           {
               $curl = new Curl();
               $curl->setHeader('Content-Type', 'application/json');
               $curl->setHeader('sid', $_SESSION['sid']);
               $curl->post($this->checkCaptachUrl, json_encode(array('pCaptcha'=>$captach)));
               $curl->close();
               
               return $curl->response->d;
           }
           
           public function getNipInfo($nip)
           {
               $regon = $this->getInfo($nip);
               
               $searchData = array(
                    'pNazwaRaportu'=>'DaneRaportPrawnaPubl',
                    'pRegon' => $regon[0]->Regon,
                    'pSilosID' => 0
                );
               
               $curl = new Curl();
               $curl->setHeader('Content-Type', 'application/json');
               $curl->setHeader('sid', $_SESSION['sid']);
               $curl->post($this->getComplexDataUrl, json_encode($searchData));
               $curl->close();
               
               $response = json_decode($curl->response->d);
               return $response[0];
           }
           
           private function getInfo($nip)
           {
               $searchData = array(
                'jestWojPowGmn' => true,
                'pParametryWyszukiwania' => array(
                    'AdsSymbolGminy' => null,
                    'AdsSymbolMiejscowosci' => null,
                    'AdsSymbolPowiatu' => null,
                    'AdsSymbolUlicy' => null,
                    'AdsSymbolWojewodztwa' => null,
                    'Dzialalnosci' => null,
                    'FormaPrawna' => null,
                    'Krs' => null,
                    'Krsy' => null,
                    'NazwaPodmiotu' => null,
                    'Nip' => $nip,
                    'Nipy' => null,
                    'NumerwRejestrzeLubEwidencji' => null,
                    'OrganRejestrowy' => null,
                    'PrzewazajacePKD' => false,
                    'Regon' => null,
                    'Regony14zn' => null,
                    'Regony9zn' => null,
                    'RodzajRejestru' => null
                    )
                );
               
               $curl = new Curl();
               $curl->setHeader('Content-Type', 'application/json');
               $curl->setHeader('sid', $_SESSION['sid']);
               $curl->post($this->searchDataUrl, json_encode($searchData));
               $curl->close();
               
               return json_decode($curl->response->d);
               
            }
       }
        
       
       $Gus = new Gus();

       if(isset($_POST['captach'])){
           if($Gus->checkCaptach($_POST['captach']))
           {
               echo 'capta ok!';
               echo '<pre>';
               var_dump($Gus->getNipInfo('5250010976'));
               echo '</pre>';
           }
           else{
               echo 'capta error';
               $Gus->login();
               $Gus->getCaptach();
               echo '<img src="captach.jpeg">';
                echo '<form action="" method="POST">';
                echo '<input type="text" name="captach" >';
                echo '<input type="submit" value="Chceck">';
                echo '</form>';
           }
       }
       else{
           $Gus->login();
           $Gus->getCaptach();
       
           echo '<img src="captach.jpeg">';
           echo '<form action="" method="POST">';
           echo '<input type="text" name="captach" >';
           echo '<input type="submit" value="Chceck">';
           echo '</form>';
       }
0

Dziekuje za posta.

Przepraszam ze pozno odpisuje, nie bylo mnie troche ;p

Mam pytanie, podczas proby uruchomienia otrzymuje nastepujacy blad:

Notice: Trying to get property of non-object in C:\xampp\htdocs\gus_regon\gus.php on line 38

Notice: Trying to get property of non-object in C:\xampp\htdocs\gus_regon\gus.php on line 51

I captcha nie pokazuje sie poprawnie

0

czy ktoś znalazł jakieś działające rozwiązanie?

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