Cześć, próbuję wyciągnąć kursy wydarzeń sportowych ze strony: https://www.orbitexch.com/ - a konkretnie to jsonowy plik, które je zawiera. Chciałbym stworzyć bazę danych z historycznymi kursami, porównaniami etc. Niestety póki co bez skutku. Strona jest oporna i "nie pozwala" na wyciągnięcie jsona z wartościami kursów. Chciałbym się zapytać czy w ogóle jest taka możliwość aby wyciągnąć te dane z tej strony. Nie znam się zbyt na web scrapingu, podstawy ogarniam i zdaję sobie sprawę, że strona ma (prawdopodobnie) zabezpieczenia anti-scrapingowe, ale czy jest jakakolwiek możliwość aby je obejść. Korzystam z curl'a do tworzenia zapytania http POST. Poniżej zamieszczam jak ono wygląda wraz z odpowiedzią. Z tego co zauważyłem link do json'a, którego potrzebuję, za każdym razem zmienia swoją końcówkę. W kodzie poniżej, jak można zauważyć, serwer wysyła mi komunikat HTTP 200, a zawartość to jedna mała litera "o". Proszę o pomoc i wyjaśnienie - jak (jeśli to możliwe) wyciągnąć wartości tego json'a. Przy tworzeniu zapytania, posługiwałem się narzędziem deweloperskim z Chroma aby podejrzeć w którym pliku wysyłane są wartości kursów, a także użyłem wartości z "header request" tego pliku. Z góry dzięki za pomoc.
Request:
$url = "https://www.orbitexch.com/customer/ws/multiple-market-prices/917/31ndecct/xhr?t=1590161691981";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch,CURLOPT_HEADER, true);
$httpHeader = [
'"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
"Accept":"application/json",
"Content-Type":"application/json",
"Host":"www.orbitexch.com",
"Origin":"https://www.orbitexch.com",
"Connection":"keep-alive",
"Cookie":"_ga=GA1.2.1656233833.1589476933; _gid=GA1.2.1008686933.1590154787; BIAB_HOW_TO_LINKS=true; i18next=en; BIAB_TZ=-120; BIAB_SHOW_TOOLTIPS=false; BIAB_WAS_ON_AV=false; _gat=1; CSRF-TOKEN=bc094ae88d3f5252e14b6798dc5466f558
"Host":"https://www.orbitexch.com",
"Referer":"https://www.orbitexch.com/customer/inplay/all/1",
"Sec-Fetch-Dest":"empty",
"Sec-Fetch-Mode":"cors",
"Sec-Fetch-Site":"same-origin",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
"Referer":"https://www.orbitexch.com/customer/inplay/highlights/1"'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
$postData = "1590177727949";
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$info = curl_getinfo($ch);
# execute
$output = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
Response:
response:
HTTP/1.1 200 OK
Date: Fri, 22 May 2020 20:20:18 GMT
Content-Type: application/javascript;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: PWS/8.3.1.0.8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Via: 1.1 hsh149:1 (W)
X-Px: ms hsh149WAW(origin)
X-Ws-Request-Id: 5ec83402_hsh150_16690-48318
o