Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> cURL wysłanie formularza + cookie (webapi allegro)
duch4ever
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Witam, mam problem z webapi allegro. Mają ustawiony limit zapytań po przekroczeniu którego IP jest blokowane i trzeba przejść pod adres http://webapi.allegro.pl/blocked/index.php wpisać captche i blokada znika. Trzeb tam przejść z IP na którym jest blokada i w przypadku serwerów www jest problem...

Pomyślałem że można by wykorzystać cURL, pobrać obrazek captcha i wysłać zapytanie przez cURL z kodem i ciastkiem. Niby wszystko jest ok ale formularz zawiera dodatkowo token...

Formularz:
  1. <form action="/blocked/index.php" method="post">
  2. <img src="/blocked/image.php" class="captcha" alt="">
  3. <br>
  4. <input type="hidden" name="get" value="">
  5. <input type="text" name="code" value="">
  6. <input type="hidden" name="token" value="8e09b646910c088b24b5a331548e4ebd">
  7. <input type="submit" value="Prześlij kod">
  8. </form>


Po pobraniu formularza przez cURL nie ma tego tokena w kodzie html a bez niego formularz nie przechodzi. HELP!
Mój kod:

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, "http://webapi.allegro.pl/blocked/index.php");
  3. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '\tmp\cookie.txt');
  4. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '\tmp\cookie.txt');
  5. curl_setopt($ch, CURLOPT_HEADER, 1);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  8. $rawdata = curl_exec($ch);
  9.  
  10. curl_close($ch);
  11.  
  12. var_dump($rawdata);


Ten post edytował duch4ever 27.11.2014, 00:10:11
Go to the top of the page
+Quote Post
NickOver
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A nie łatwiej daćprzerwy między requestami?
Go to the top of the page
+Quote Post
duch4ever
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Dodałem sleep(3); ale nie pomaga.
Co ciekawe lokalnie kod działa i token się pojawia a na serwerze nazwa.pl już nie ;/, ciastko lokalna ma więcej parametrów.
W czym może być różnica?
Go to the top of the page
+Quote Post
modern-web
post
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Poczytaj o CSRF, to zabezpieczenie, które stosuje się we wszystkich nowoczesnych aplikacjach.
Formularz powinien zostać wypełniony na tamtej stronie, możesz go wyświetlić w ramce iframe jeżeli bardzo Ci na tym zależy.
Go to the top of the page
+Quote Post
duch4ever
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Dzięki za info, za zabezpieczenie jak mniemam odpowiada owy token, ale dlaczego raz się pojawia w formularzu pobranym przez cURL a raz nie?
Iframe raczej odpada bo formularz musi być wysłany z IP serwera a nie mojego.
Go to the top of the page
+Quote Post
modern-web
post
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Tak, token musi być przesłany bo określa on po części "intencje" użytkownika i blokuje spamowanie takich endpointów przez boty.
Dlaczego jednak czasami go otrzymujesz a czasami nie, to nie mam pojęcia. Musisz zbadać problem, może to są różne formularze? Albo jeżeli używasz regex-a to masz zły wzorzec. No nie wiem, za mało informacji żebym mógł cokolwiek stwierdzić.
Go to the top of the page
+Quote Post
duch4ever
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Regex jest ok bo podglądam również kod dla pewności, token nie pojawia się jeśli wyłączę cookies w przeglądarce ale dlaczego przy identycznym skrypcie cURL czasem działa a czasem nie?

Może jest jakiś inny sposób przy puścić ruch przez serwer (bez dostępu do ssh itp.)?
Go to the top of the page
+Quote Post
modern-web
post
Post #8





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Możesz wywołać file_get_contents ale to prymitywne rozwiązanie.
Próbowałeś szukać jakiś bibliotek do takich rzeczy? Jest tego masa.
Go to the top of the page
+Quote Post
duch4ever
post
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Każda z bibliotek działa na bazie cURL więc działa tak samo jak mój kod.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 1.10.2025 - 10:41