Parazitní formuláře

jak odesílat data na cizí servery

Jak udělat parazitní formulář - Příklad s vyhledávačem - Odesílaný dotaz - Skrytá pole - Přípustné úpravy - Další příklady - Analýza dotazu

Jak už jsem zmínil v úvodu do formulářů

Jedním z řešení funkčnosti je využití programů na cizích serverech, které umějí věc, kterou potřebuji. 

Formulář se prostě namíří (pomocí action) na cizí stránku, pošle jí data a nechá ji zobrazit výsledky. Výsledná stránka pak sice nebude moje, ale bude to fungovat. 

Pro nedostatek terminologie označuji takové použití formulářů za parazitní. Není to ale přesné, ve skutečnosti se jedná spíše o symbiózu, protože "zneužívaný" server nijak neutrpí a přijdou tak na něj noví uživatelé. 

Jak udělat parazitní formulář

Nejlépe je zkopírovat jej. Najdu si stránku, která se mi líbí a vezmu z ní formulář (nejčastěji zkopírováním zdroje). Většinou se pak formulář ještě musí trochu upravit (hlavně action). 

Jiný způsob je analýza serverových dotazů metody get. To je spíše pro pokročilejší.

Příklad s vyhledávačem

Google sídlí na adrese https://www.google.com. Zobrazil jsem si jeho zdroj a zkopíroval formulář s tímto HTML zápisem (zestručněno):

<form action="/search" method="GET" name="f" role="search">
<input name="ei" type="hidden" value="">
<input autocomplete="off" maxlength="2048" name="q" type="text" value="">
<input name="btnK" type="submit" value="Google Search">
</form>

Když si tento formulář vložím do stránky, mám skoro vyhráno. Ještě jej ale trochu upravím (a vysvětlím jednotlivé části).

Oprava action

Jediná nezbytná úprava spočívá v namíření formuláře na správnou adresu. V původním formuláři byla relativní adresa "/search". Původní formulář ale sídlil na jiné adrese, takže to funguje jenom z té původní adresy. Musí se to opravit na absolutní adresu; většinou tak, že se před původní action napíše umístění původní stránky (popř. beze jména souboru). 

action="https://www.google.cz/search"

Nové okno

Výsledky parazitních formulářů se většinou nechávají otevírat v novém okně (není podmínkou). Do tagu form se dopíše atribut target="_blank". Celý formulář potom bude vypadat takto: 

<form action="https://www.google.cz/search" method="GET" name="f" role="search" target="_blank">
<input name="ei" type="hidden" value="">
<input autocomplete="off" maxlength="2048" name="q" type="text" value="">
<input name="btnK" type="submit" value="Google Search">
</form>

A mohlo by to fungovat. Zkuste.

 

Případně se tam může dát jiné kódování (to podle toho, jaké na stránkách používáte), takže například pro kódování windows-1250:

<input value="windows-1250" name="ie" type="hidden">

Odesílaný dotaz

Když zadám hledaný text (třeba Prachatice) a zmáčknu Enter, odešle se na adresu www.google.com/search dotaz, který je k nerozeznání od dotazu, který by pocházel z původního formuláře:

https://www.google.com/search?q=Prachatice&hl=cs

Dotaz za otazníkem obsahuje vždy dvojici jméno=hodnota. Jména se berou z atributů name jednotlivých vstupních políček (inputů). Hodnotou je buď to, co zadal uživatel, nebo přednastavená hodnota (atribut value). 

Pokud je pro vás odesílaný dotaz záhadou, přečtěte si úvod do formulářů.

Skrytá pole

Co znamená ten řádek 
<input name=hl type=hidden value=cs>

Odesílá skrytá data. Prostě připojí do dotazu dvojici hl=cs. Používá se pro hodnoty, do kterých uživateli nic není a neměl by je měnit, pro účely programu jsou ale nezbytné.

Přesně nevím, co znamená to jméno hl a hodnota cs (asi že se budou výsledky komentovat česky). To ale není důležité, to jsem jen zkopíroval.

Většina kopírovaných cizích formulářů bude obsahovat skrytá pole, jimž nebudete rozumět. Můžete je zkusit smazat a sledovat, jestli to přestane fungovat (je to otázka ceny vašeho času).

Přípustné úpravy

Většina cizích formulářů se napřed musí očistit od cizího balastu. Je dobré smazat tagy tabulek, písem a skriptů. Nejlépe se pracuje jenom s čistou kostrou formuláře, kterou tvoří pouze tagy <form>, <input>, <select>, <textarea> (a zřídka některé další). Pokud si nejste jisti syntaxí, nastudujte si zápis vzhledu formulářových polí.

Důležité je pouze to, aby se nějak nepokazil dotaz, který se bude z formuláře odesílat.

Jinak řečeno, můžete

Naopak nikdy nesmíte

Další příklady

Tato stránka byla psána začátkem 21. století, takže většina funkcí už nebude fungovat. Jde pouze o příklady!

Vyhledávání na Atlasu
Hledání práce na Jobpilot
Vyhledávání Googlem na vlastním serveru
SMS na Oskara
Hledání na Seznamu

Protože se mohou měnit cílové skripty, je možné, že příklady časem nebudou funkční.

Vyhledávání na Atlasu.cz

<form action="https://www.atlas.cz/search.asp" method="get">
<input type="text" name="searchtext" size="12">
<input type="submit" value="Najdi na Atlasu" >
</form>

Hledat nezkoušejte, už to nefunguje, to byl jenom příklad. Malý komentář: vidíte, že action míří na stránku s příponou .asp. To je stránka napsaná v jazyce ASP, která umí zpracovávat dotazy. Protože je to ASP, tak se nedá zaměnit method="get" na method="post" (což lze dost často zaměňovat třeba u PHP, ale ne vždy).

Name="searchtext" je velice důležité zachovat, protože ta asp stránka se bude ptát na hodnotu spojenou se "searchtext".

Výsledný dotaz:

https://www.atlas.cz/search.asp?searchtext=Prachatice 

Hledání práce na Jobpilot

<form action="https://www.jobpilot.cz/job_suche/search.phtml" method="get" target="_blank">
Práce v Jobpilotu: <input type="text" name="keywords" size="12" maxlength="100">
<input type="submit" value="Hledat" >, zkuste.
</form>

Tenhle příklad už taky nefunguje.

Action mi nyní míří na soubor s příponou phtml, což je PHP skript. Proto je nyní možné pravděpodobně zadat i method="post", ale u takto malého dotazu se to nevyplatí.

Opět je nutno zachovat name="keywords", protože PHP skript bude čekat hodnotu proměnné $keywords. Ve vstupním poli vidíme omezení dotazu na sto znaků (maxlenght=100), třebaže najednou jich bude vidět jenom 12 (size=12).

Vyhledávání Googlem na vlastním serveru

Na stránce pokročilého vyhledávání serveru Google se dá zvolit vyhledávání jenom v určité doméně nebo webu. Po úpravě vypadá formulář takto: 

Vyhledávání na tomto serveru: <form
action="http://www.google.com/search" target="_blank">
<input type="text" name="as_q" size=20>
<input type="hidden" name="as_sitesearch" value="jakpsatweb.cz">
<input type="hidden" name="num" value="10">
<input type="hidden" name="btnG" value="Vyhledat">
<input type="submit" value="Vyhledat">
</form> 

Vyhledávání na mých osobních stránkách:
, zkuste.

Změníte-li adresu v políčku as_sitesearch na fragment své domény, můžete si takto udělat vyhledávání na vlastním serveru. (Problém je, že se tam už nesmějí používat moc lomítka, pouze jedno, je potřeba to vyzkoušet.) Podmínkou je, aby k vám chodil indexovat Google (je to pravděpodobné). Přenastavením zřejmých hodnot skrytých polí můžete měnit výsledky; např. ta desítka u num je počet zobrazených výsledků na stránce. 

V praxi je více různých možností, jak prohledávat vlastní stránky.

SMS na Oskara

Příklad nefunguje, protože programátoři v Oskaru časem do stránky přidali obrázek, který se musí opsat. Níže uvedený příklad berte prosím pouze jako příklad.

Z webu Oskara (dokud ještě fungoval) jsem zkopíroval formulář, který měl action nastavenou takto:

action="send.php3?locale=cz" 

Výsledná adresa action tedy bude action="http://sms.oskarmobil.cz/send.php3?locale=cz"

Celý formulář po smazání balastu vypadá takto:

<form name="sms" action="http://sms.oskarmobil.cz/send.php3?locale=cz" method="post" target="_blank">
Telefonní číslo příjemce: +420 
<select name="predcisli" size="1">
<option value="0608" selected>608</option>
<option value="0776">776</option>
<option value="0777">777</option>
</select>
<input type="Text" name="number" size="6" maxlength="6">
<input type="hidden" name="ppp" value="100906003088924:02f897c004b89437065b1dd960c3acfe">
<br>
ZPRÁVA (bez diakritiky): <br>
<textarea name="message" cols="60" rows="8" maxlength="779"></textarea>
<br>
<input name="sb" type="submit" value="Odeslat zprávu"> <input type="reset" value="Vymazat" >
</form>

Telefonní číslo příjemce: +420
ZPRÁVA (bez diakritiky):

Příklad už taky naostro nefunguje.

Ze stránky jsem odstranil JavaSkripty, které počítají počet znaků a esemesek. Mohly by se tam nechat a fungovalo by to. To pro výsledek ale není podstatné, protože si server musí umět poradit i se vstupy z prohlížečů, kde je JavaScript zakázán. 

Textová oblast se zprávou má nastavenu maximální délku 779 znaků, což je většinou dobrá ochrana (dá se sice zlomit, ale těžko omylem).

Jediné, co jsem nepochopil, je skrytá hodnota name="ppp" s obrovským vygenerovaným řetězcem. Pravděpodobně zabraňuje zneužití formuláře (takže to možná hlásilo, že stránka vypršela).

Analýza dotazu

Někdy nemusím ani chodit na stránku s původním formulářem. Stačí mi, když znám dotaz, který formulář odesílal. Takové dotazy se nejčastěji najdou při analýze log souborů (sledování přístupů).

Příklady vyhledávacích dotazů

http://search.centrum.cz/katalog/search.php?q=hudebn%ED+teorie

http://search.seznam.cz/search.cgi?min=l-s-c-k&w=Feynman

http://www.webfast.cz/search.php?q=warcraft&sec=mix&typ=std&top=0&from=21

http://search.msn.com/spbasic.htm?MT=CD%20LABELS

http://hledej.atlas.cz/fulltext.asp?query=famulus&from=41

http://google.yahoo.com/bin/query?p=frontpage+expres&hc=0&hs=0

Například ze stránek těchto dotazů chodí čtenáři na moje stránky. 

Hledání na Seznamu

Tak dejme tomu, že ten dotaz ze Seznamu 

https://search.seznam.cz/search.cgi?q=Feynman 

přepracuji do parazitního formuláře:

<form action="https://search.seznam.cz/" target="_blank">
V katalogu Seznamu: <input name="q">
<input type="submit" value="Hledej!">
<form>

V Seznamu:

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Základy Prvky stránek Tvorba webu

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.