Autor | Zpráva | ||
---|---|---|---|
Dvory59 Profil |
#1 · Zasláno: 1. 4. 2018, 18:38:12
Ahoj,
mám takový problém, který se netýká přímo PHP, ale v mém případě to s tím tak nějak souvisí. Snažím se posílat request na tuto stránku pomocí toho kódu $query = http_build_query($data); $request = [ 'http' => [ 'method' => "POST", 'header' => "Accept-language: en-US,en;q=0.5\r\n" . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n". "Connection: keep-alive\r\n". "Host: www.rvvi.cz\r\n". "Referer: https://www.rvvi.cz/riv?s=rozsirene-vyhledavani\r\n". "Upgrade-Insecure_Requests:1\r\n". "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/2010\r\n". "Cookie: foo=bar\r\n". "Content-type: application/x-www-form-urlencoded\r\n", "Content-Length: ".strlen($query)."\r\n", 'content' => $query], ]; $context=stream_context_create($request); $page = file_get_html("https://www.rvvi.cz/riv",false,$context); Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at www.rvvi.cz…yGothics.ttf. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Hledal jsem co to znamená a podle informací na developer.mozzila.org jsem tak nějak pochopil, že k tomu aby můj request prošel by museli mít na straně serveru ke kterému tento požadavek posílám nastaveno něco ve smyslu : "Access-Control-Allow-Origin: *" ,takže s tím nic neudělám, pokud to nemají povolené. Nevím ale, jeslti jsem to pochopil správně, protože jsem našel spoustu lidí, co řeší stejný problém a povedlo se jim ho vyřešit. Nicméně řešení, které jsem od nich našel na to mé nefunguje. Proto jsem z toho celkem zmatený a nevím, jeslti s tím opravdu něco mohu udělat nebo ne. Setkal se už někdo s tímto problémem, případně neví prosím někdo jak ho vyřešit? Budu vděčný za jakoukoliv radu! |
||
Keeehi Profil |
#2 · Zasláno: 2. 4. 2018, 02:40:33
Dvory59:
Nemohu chybu zreplikovat. Například $data = [ 'rivB' => [ "zu_dv" => "P", "zu_kv" => 0, "zu_jv" => "cze", "zu_dd" => "AV0", "zu_ik" => "", "pv_no" => "", "pc_ks" => "", "pv_ico" => "", "pv_noj" => "", "pv_koj" => "", "pv_pr" => "", "pv_jm" => "", "pv_ss_rok" => 0, "pv_ss_pos" => "", "pv_ss" => 2, "tv_pr" => "", "tv_jm" => "", "tv_iv" => "", "vy_sp" => "", "vy_na" => "", "vy_rs_o" => 2017, "vy_rs_d" => "-", "vy_ru_o" => 2017, "vy_ru_d" => "-", "vy_os" => "", "vy_ks" => "", "vy_ii" => "", "vy_nd" => "", "vy_ps_min" => "", "vy_ps_max" => "", "kp_vooecd" => [ "F0" => 0, "F1" => 0, "F2" => 0 ], "nv_vd" => "", "nv_os" => "", "nv_ikp" => "" ], "s" => "rozsirene-vyhledavani", "e" => 1, "searchHash" => "831fda16d416c0fd3582b30b84fb8bc53626b82a", "searchKey" => 41212207 ]; $query = http_build_query($data); $request = [ 'http' => [ 'method' => "POST", 'header' => "Accept-language: en-US,en;q=0.5\r\n" . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n". "Connection: keep-alive\r\n". "Host: www.rvvi.cz\r\n". "Referer: https://www.rvvi.cz/riv?s=rozsirene-vyhledavani\r\n". "Upgrade-Insecure_Requests:1\r\n". "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/2010\r\n". "Cookie: PHPSESSID=8c2ci90pv5gg67ms52sran5270\r\n". "Content-type: application/x-www-form-urlencoded\r\n", "Content-Length: ".strlen($query)."\r\n", 'content' => $query], ]; $context=stream_context_create($request); $page = file_get_contents("https://www.rvvi.cz/riv",false,$context); echo $page; |
||
Dvory59 Profil |
#3 · Zasláno: 2. 4. 2018, 17:41:49
Keeehi:
V první řadě bych ti chtěl moc poděkovat, že jsi si na to udělal čas. Problém byl právě v té cookie a searchHash. Jen mám trochu problém v automatizaci tohoto scriptu.. Teda jestli vůbec jde udělat automatickej. Co se PHPSESSID týče, to dostanu z get_headers(), ale asi problém bude v tom searchHash, popřípadě i v tom searchKey. Nenapadá tě, jestli by byla nějaká cesta jak tyhle dva paramatery nějak dostat, abych je mohl přidávat a posílat automaticky jako proměnnou? |
||
Keeehi Profil |
#4 · Zasláno: 2. 4. 2018, 18:21:31
Dvory59:
Musíš si nejdříve načíst stránku s formulářem a ty data v nich najít. A potom je použít v druhém dotazu. |
||
Dvory59 Profil |
#5 · Zasláno: 2. 4. 2018, 22:23:43
Keeehi:
Zkouším to, ale uvízl sem na slepé koleji :/ Nevím , jestli na to jdu vůbec dobře. Mohl by jsi se prosím na tohle mrknout, jestli nejsem uplně vedle? Prvně si najdu to PHPSESSID $header = (get_headers("https://www.rvvi.cz/riv")); $set_cookie = str_replace("; path=/","",$header[7]); $cookie= str_replace(" ","",str_replace("Set-","",$set_cookie)); Potom s touto $cookie v hlavičce a s prázdnými daty pošlu požadavek s cílem zjistit Hash a Key : $data=[]; $query = http_build_query($data); $request = [ 'http' => [ 'method' => "POST", 'header' => "Accept-language: en-US,en;q=0.5\r\n" . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n". "Connection: keep-alive\r\n". "Host: www.rvvi.cz\r\n". "Referer: https://www.rvvi.cz/riv?s=rozsirene-vyhledavani\r\n". "Upgrade-Insecure_Requests:1\r\n". "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/2010\r\n". "".$cookie."\r\n". "Content-type: application/x-www-form-urlencoded\r\n", "Content-Length: ".strlen($query)."\r\n", 'content' => $query], ]; $context=stream_context_create($request); $page=file_get_html("https://www.rvvi.cz/riv",false,$context); $hash=$page->find("input[name=searchHash]",0)->value; $key=$page->find("input[name=searchKey]",0)->value; Ten poslední požadavek je uplně stejný jako předtím, pro ušetření už tak dost spamovýho příspěvku ukážu jen jak dávám ten konkrétní $hash a $key do pole "searchHash" => "".$hash."", "searchKey" => "".$key."" Nevíš prosím, proč mi to takhle dělá? |
||
Časová prodleva: 6 let
|
0