Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

file_get_contents zablokowane przez allegro, co teraz?


Rekomendowane odpowiedzi

Opublikowano

kupuję na allegro i moja strona wyszukiwała co kilka minut interesujące mnie aukcje

niestety dwa dni temu allegro zablokowało możliwość pobierania file_get_contents,

dodałem kod który miał pomóc $context, ale tak samo

"...failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in..."

 

próbowałem tego, niestety też nie działa

<?php
$context = stream_context_create(
  array(
    'http' => array(
      'user_agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
    ),
));

$content = file_get_contents('https://allegro.pl/listing?string=wiertark*%20sto%C5%82ow*&price_to=250&price_from=100', false, $context);

echo $content;
?>

 

Opublikowano

Jak można zauważyć w outputcie, zaczęli używać JS Challenge. Proponuje do takiego scrapowania emulator np. phantom

[mateusz@pc ~]$ curl 'https://allegro.pl/listing?string=wiertark*%20sto%C5%82ow*&price_to=250&price_from=100'
<html><head><title>allegro.pl</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script>var dd={'cid':'AHrlqAAAAAMAt8R4oLfSw80AwG3xrQ==','hsh':'77DC0FFBAA0B77570F6B414F8E5BDB','t':'fe','s':29963,'host':'geo.captcha-delivery.com'}</script><script src="https://ct.captcha-delivery.com/c.js"></script></body></html>
[mateusz@pc ~]$

 

Opublikowano
52 minuty temu, zlotowinfo napisał:

co kilka minut interesujące mnie aukcje

Proste dostałeś BANA na IP 😁 Zainteresuje się curl i proxy HTTP lub SOCKS w celu podmiany IP.

Opublikowano

Spróbuj zmienić user agent i symulować więcej normalnego ruchu. Ewentualnie chromium działa już bez gui to przejdzie JS Challange

Opublikowano
1 godzinę temu, zlotowinfo napisał:

dodałem kod który miał pomóc $context, ale tak samo

Jeśli już Dodałeś to co dodałeś to dodaj też pozostałem parametry żądanie HTTP jakie wysyła przeglądarka.
Ale najlepszym podejściem będzie wykorzystanie API.

Opublikowano

@Matix8981 też to testowałem z podobnymi wnioskami

@mrViperoo czy możesz rozwinąć? nie wiem co tam podać, nie musiałem nigdy aż tak kombinować

@nnd.newbie jestem na bakier z dokumentacjami
po za tym nie skopiuję url z przeglądarki do skryptu, tylko trzeba wszystko przerabiać

wpisałem w przeglądarkę: https://api.allegro.pl/offers/listing?phrase=laptop&category.id=77917

{"errors":[{"code":"NotAcceptableException","message":"Not acceptable representation requested. Please check 'Accept' request header","details":null,"path":null,"userMessage":"Żądanie zawiera błędne dane. Skontaktuj się z autorem aplikacji."}]}

 

Opublikowano (edytowane)

No nie, nie wystarczy skopiować URL do api do skryptu który jest scraperem html. Ale jeśli chcesz mieć to zrobione dobrze to powinieneś użyć API. Ściąganie danych ze strony wymaga wprowadzania poprawek w skrypcie jeśli ulegnie zmianie struktura strony HTML, a ta może ulegać zmianom bez żadnych powiadomień ze strony Allegro .  Poza tym roboty biegające po stronie WWW są niemile widziane przez twórców stron. Więc nie tylko musisz reagować na przebudowę stron, ale także ciągle kombinować jak obejść zabezpieczenia i upierdliwości stosowane przez twórcę strony, którzy będą próbować Cię blokować. Czego przykład masz teraz.

Edytowane przez nnd.newbie
Opublikowano
53 minuty temu, zlotowinfo napisał:

po za tym nie skopiuję url z przeglądarki do skryptu, tylko trzeba wszystko przerabiać

By skorzystać z API z pewnością musisz uzyskać TOKEN autoryzacji, który musisz przekazać w stosownym nagłówku autoryzacji

https://developer.allegro.pl/getting_started/#jak-uzyskać-token-dostępowy-do-api
Musisz  wywołać odpowiednia końcówkę "end point"  URL  i przesłać parametry żądania

 

Nie tak jak ty robisz na żywca jakieś zlepki !

 

Wszystko masz w dokumentacji

Opublikowano

W dokumentacji są wymienione wszystkie nagłówki, które są potrzebne, żeby uzyskać dane z API: https://developer.allegro.pl/getting_started/

 

~ ❯❯❯ curl -H 'Accept: application/vnd.allegro.public.v1+json' 'https://api.allegro.pl/offers/listing?phrase=laptop&category.id=77917'
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}%                               
~ ❯❯❯ 

 

Opublikowano

Ty masz w o ogolę jakieś pojęcie o programowaniu ?

https://lornajane.net/posts/2011/posting-json-data-with-php-curl
https://tecadmin.net/post-json-data-php-curl/
https://www.codegrepper.com/code-examples/php/curl+request+php+send+json

ITD..

 

Opublikowano (edytowane)

w zakresie w jakim mi potrzeba, nie używam curl i json, używam file_get_contents

no cóż muszę sobie odpuścić allegro, szkoda

Edytowane przez zlotowinfo
Opublikowano

Będziesz musiał odpuścić sobie dużo innych rzeczy, jeśli nie masz zamiaru nauczyć się programować albo nie zaczniesz komuś płacić za to że coś ci zaprogramuje. Poza tym przydałoby się doszkolić, żeby przynajmniej mieć pojęcie jak zlecić taką pracę , bo to co napisałeś na repozytorium Allegro Api delikatnie mówiąc świadczy o dogłębnym braku znajomości tematu. Zaczynając od tytułu: "przetłumaczyć wyszukiwanie na język api" które nie ma sensu, nie jest ani pytaniem ani opisem błędu, za to zawiera stwierdzenie "język api" który jest jakimś  oksymoronem (api to nie język, a nawet gdyby był to "przetłumaczenie wyszukiwania" na jakiś język też ma sens chyba tylko dla ciebie).

  • Lubię 1

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Regulamin, Polityka prywatności.