Diskuze: Stahování webů v PHP a záměna HTTP_USER_AGENT

PHP PHP Stahování webů v PHP a záměna HTTP_USER_AGENT American English version English version

Aktivity (1)
Avatar
Matěj Strnad:21. června 18:55

Weby stahovat umím ale nevím jak zaměnit HTTP_USER_AGENT na toto:

Mozilla/5.0 (compatible; MatBot; +https://katalog.mat-internet.eu)

nevím zda zrovna toto bude fungovat v HTTP se moc nevyznám :)

Odpovědět 21. června 18:55
Ty vaše internety!
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Matěj Strnad
Jindřich Máca:21. června 19:08

Tak v první řadě tu úplně nevidím otázku a hlavně tu nevidím použité technologie, funkce a co jsi třeba už zkoušel. User-Agent je součástí HTTP hlavičky každého dotazu, takže ho prostě změníš. Jak konkrétně to uděláš závisí na právě tom, jaké technologie a funkce používáš...

A za druhé, pokud se to opět týká Tvého webového "vyhledávače", tak přeci skoro všechno na webu funguje přes HTTP a tím pádem by jsi ho měl naopak umět velice dobře. Už jen proto, aby jsi byl schopen řešit podobné problémy. :-`

 
Nahoru Odpovědět  +1 21. června 19:08
Avatar
Matěj Strnad:21. června 19:10

A momentálně používám toto:

file_get_contents($url, FILE_USE_INCLUDE_PATH);
Nahoru Odpovědět 21. června 19:10
Ty vaše internety!
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Matěj Strnad
Jindřich Máca:21. června 20:04

OK, tak to je docela jednoduché, ale jako obvykle k tomu mám pár připomínek. :-P

  1. Pokud pomocí file_get_contents() získáváš data z nějaké externí absolutní URL, tak FILE_USE_INCLUDE_PATH je tam úplně zbytečně.
  2. Když se podíváš do dokumentace této funkce, najdeš tam přímo příklad, kde se manipuluje s HTTP hlavičkami - http://php.net/…contents.php#…
  3. Když vezmeš tenhle příklad, stačí tam už jen dosadit tu správnou HTTP hlavičku, ve tvém případě tedy User-Agent. Problém je, že samotnou hodnotu nemáš definovanou dobře... Pro crawlovací boty by jsi měl používat jiný formát viz. https://developer.mozilla.org/…s/User-Agent#…

Takže když se to dá všechno dohromady, bude ten příklad vypadat asi nějak takhle:

<?php

// Create an options.
$options = [
  'http' => [
    'header' => 'User-Agent: MatBot/1.0 (+https://katalog.mat-internet.eu)'
  ]
];

// Create a stream context.
$context = stream_context_create($options);

// Open the file using the HTTP headers set in the context.
$file = file_get_contents('http://www.example.com/', false, $context);
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +2 21. června 20:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.