Jeśli wątek jest w złej kategorii, to proszę o przeniesienie.
Od wczoraj walczę, a dziś cały dzień googluję. Z braku odpowiedzi szukam jej wśród Was!
Jak zasymulować poprzez cURL takie coś?:
URL:
https://remktg.arval.com/arval/jsf/arval/sa...SalesList.faces
DANE POST:
AJAXREQUEST=_viewRoot&salesForm=salesForm&salesForm%3AID_da7b784bad57be3612d0c2cd5a4b8e75=&javax.faces.ViewState=j_id5&bla=35540&salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83=salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83&
Gdy ręcznie wchodzę w wybraną aukcję w przeglądarce (aukcje pojazdów), podglądając dane przesyłane między przeglądarką a serwerem uzyskuję dokładnie takie coś jak podałem.
Pełny nagłówek:
https://remktg.arval.com/arval/jsf/arval/sa...SalesList.faces
POST /arval/jsf/arval/sales/BuyerSalesList.faces HTTP/1.1
Host: remktg.arval.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://remktg.arval.com/arval/jsf/arval/sa...SalesList.faces
Content-Length: 251
Cookie: *********
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
AJAXREQUEST=_viewRoot&salesForm=salesForm&salesForm%3AID_da7b784bad57be3612d0c2cd5a4b8e75=&javax.faces.ViewState=j_id3&bla=35540&salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83=salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83&
HTTP/1.1 200 OK
Date: Tue, 15 Jan 2013 19:16:30 GMT
X-Powered-By: JSF/1.2
Ajax-Response: redirect
Cache-Control: no-cache, must-revalidate, max_age=0, no-store
Expires: 0
Pragma: no-cache
Location: /arval/jsf/arval/sales/BuyerSalesListPreview.faces
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/xml;charset=UTF-8
Content-Language: en-US
Transfer-Encoding: chunked
Set-Cookie: ***********************
Staram się podejrzeć co jest wysyłane po kliknieciu w link i to samo przekazać z uzyciem cURL. Niestety nie daje to efektu. Zamiast listy aut danej aukcji otrzymuję komunikat:
Issue on navigation
Oops….
A problem occurred. To resume a normal navigation, please click one of the links on the above menu.
A Opcja CURL_HEADER wyświetla mi nagłówek:
HTTP/1.1 302 Found Date: Tue, 15 Jan 2013 18:59:39 GMT Cache-Control: private,no-cache,no-store X-UA-Compatible: IE=EmulateIE7 X-Powered-By: JSF/1.2 Location: https://remktg.arval.com/arval/ErrorPage.faces Content-Length: 0 Vary: Accept-Encoding Content-Type: text/plain Content-Language: en-US Set-Cookie: ************************************;expires=Tue, 15-Jan-2013 19:04:43 GMT;path=/;secure HTTP/1.1 200 OK Date: Tue, 15 Jan 2013 18:59:39 GMT Cache-Control: private,no-cache,no-store X-UA-Compatible: IE=EmulateIE7 X-Powered-By: JSF/1.2 Vary: Accept-Encoding Content-Type: text/html; charset=UTF-8 Content-Language: en-US Transfer-Encoding: chunked Set-Cookie: *****************************************;expires=Tue, 15-Jan-2013 19:04:43 GMT;path=/;secure
Nie jest dla mnie problemem symulowanie curlem przekazywania danych z formularzy obsługiwanych przez JS, lecz tutaj nie są przekazywane typowe dane POST (chyba). PRóbując to podstawić i uruchomić (nawet niektóre ze zmiennych z wyrażenia AJAXREQUEST=_viewRoot&salesForm=salesForm&salesForm%3AID_da7b784bad57be3612d0c2cd5a4b8e75=&javax.faces.ViewState=j_id3&bla=35540&salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83=salesForm%3AeventList%3A0%3AID_38bece6b99f262bc4ebb462435e83& sczytuję funkcją preg_match i podmieniam na takiej jakie skrypt otrzymuje po zalogowaniu, ale to nie pomaga). Dane w tym ciągu znaków są dla mnie zrozumiałe i występują w źródle strony którą otrzymuje skrypt po zalogowaniu.
Mam doświadczenie w sczytywaniu danych z otrzymanej strony i przekazywanie ich w poleceniu POST, lecz pierwszy raz spotykam się z czymś takim
AJAXREQUEST=.....
Jeśli ktoś byłby w stanie podpowiedzieć, pomóc, to bardzo proproszę.
Dziekuję.
Witam!
Nikt nie ma pomysłu?
Sam rozwiązałem zagadkę

Dla wszystkich potomnych napiszę:
Okazało się, że jednak żanych cudów nie ma. Odczytane dane POST za pomocą Live HTTP Headers (czy Firebuga) i podane tu w poście po prostu trzeba było wysłać poprzez curl. Problem był w tym, że skrypt nie był przekierowywany przez serwer do kolejnego adresu, mimo włączonej opcji CURLOPT_FOLLOWLOCATION. Trzeba było ręcznie wywołać poprzez curl kolejną podstronę (podejrzaną w nagłówkach, lub poprzez przy ręcznym buszuowaniu po serwisie).
Ale to nie koniec. Okazało się że do tego trzeba jeszcze wyłączyć opcję CURLOPT_POST -> czyli przesyłanie danych metodą POST.
Niby prosta sprawa, ale musiałem zrobić sobie parę dni przerwy po 2 dobowej walce z problemem. Siadłszy dziś "na czysto" do sprawy w końcu to odkryłem.
Także potwierdza się. Czy JavaScript, czy AJAX, czy inne cudo. Aby poradzić curlem, trzeba śledzić z użyciem ww aplikacji co jest submitowane na jaki url i naśladować to.
+ czasem jeszcze żąglowanie opcjami
+ czasem ręczne przechodzenie po kolejnych adresach, mimo włączonego FOLLOWLOCATION.
Pozdrawiam!

