Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Stažení výsledků hledání google přes file_get_contents...

Ahoj, řeším tu jeden drobný problém s googlem - mám tu jednu svojí utilitku napsanou v php, která sleduje pozice ve vyhledávání na googlu, seznamu a dalších...

Funguje to tak, že mám db určitých výrazů které hledám a pak si generuji grafy jak si konkrétní fráze vedla v jednotlivých testech.

Program mi pěkně fungoval cca od srpna a vždy v noci se spustila dávka testů, ale začátkem tohoto roku mi přestal fungovat google - místo aby vrátil html s výsledky hledání, tak dostanu úvodní stranu která má i špatné písmo (místo diakritiky jen otazníky), nebo dostanu stránku s captchou, případně odkaz na redirect.

Načítání html používám klasické file_get_content (ale zkoušel jsem i curl).

Když chci např. vyhledat výsledky hledání na slovo "lékárna praha", udělám toto:

<?php
$fraze="lékárna praha";
$url = "https://www.google.cz/search?".urlencode($fraze)."&start=0";
$html = file_get_contents($url);
?>

Výše uvedený kód až do teď fungoval 100%. Zkoušel jsem různé změny adresy, parametry apod. Někdy jsem se i dostal do fáze, že když jsem script odpálil v prohlížeči, tak jsem dostal výsledek, ale jakmile jsem to implementoval v programu, tak zase nic...

Asi to bude potřebovat nějaké hlavičky, ale jaké a jak je poslat?

Díky za pomoc

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
https://www.whatismybrowser.com/detect/what-http-h eaders-is-my-browser-sending <?php $fraze="lékár…
Flash_Gordon 02.02.2016 22:24
Flash_Gordon
Tak bohužel po dvou dnech opět dostávám chybu Warning: file_get_contents(search): failed to open str… nový
n.u.r.v. 04.02.2016 12:36
n.u.r.v.
Ja teda neviem... Chceš používať niečo od Google, tak sa informuj ako na to priamo u nich: custom-se… nový
pme 04.02.2016 12:48
pme
Ano, vím že na to mají api, ale potřeboval jsem nasimulovat situaci, jak to vidí user který přijde n… nový
n.u.r.v. 04.02.2016 13:37
n.u.r.v.
Hmmm. Ještě můžeš použít nějaký random řetězec klientského User-Agenta pro hledání. Třeba to oblbne… nový
Flash_Gordon 04.02.2016 16:47
Flash_Gordon
No dopoledne jsem nasadil novou verzi, která zaprvé bude náhodně spouštět dotazy v rozmezí 1-2 minut… poslední
n.u.r.v. 04.02.2016 19:32
n.u.r.v.
• Zkus pouzit: file_get_contents($url, 0); Na misto ($url); • Pres Proxy nejedes ne, nebo jsi v B… nový
CoCoChanel 04.02.2016 12:50
CoCoChanel

https://www.whatismybrowser.com/detect/what-http-h eaders-is-my-browser-sending

<?php 

$fraze="lékárna praha"; // tutaj pořešit encoding 

$url = "https://www.google.cz/search?".urlencode($fraze)."&start=0"; 

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n" .  
              "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0" 
  )
);

$context = stream_context_create($options);
$html =  file_get_contents($url, false, $context); 

?>

Ano, vím že na to mají api, ale potřeboval jsem nasimulovat situaci, jak to vidí user který přijde na google... Nejsem si jist, že api bude dávat stejné pořadí...

Zatím jsem tam zkusil dát pauzy mezi jednotlivýma dotazama a tahám to přes jiný server, protože mě asi blokli IP...

Pokud to ani tak nepůjde, tak hold budu muset to api použít...

Hmmm.

Ještě můžeš použít nějaký random řetězec klientského User-Agenta pro hledání.
Třeba to oblbne blokátor.
Co já vím.

<?php 

sleep(rand(1,5)); // náhodná doba dotazů

$fraze="lékárna praha";  

$url = "https://www.google.cz/search?".urlencode($fraze)."&start=0"; 

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n" .  
              "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/".rand(1,44).".0"  // náhodná verze FireFoxu
  )
);

$context = stream_context_create($options);
$html =  file_get_contents($url, false, $context); 

?>

Zpět do poradny Odpovědět na původní otázku Nahoru