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íří 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

Můj oblíbený vyhledávač je Google sídlící na adrese http://www.google.com. Zobrazil jsem si jeho zdroj a zkopíroval formulář s tímto HTML zápisem (zestručněno):

<form action=/search name=f>
<input type=text value="" name=q size=55 maxlength=256><br>
<input name=btnG type=submit value="Vyhledat Googleem">
<input name=hl type=hidden value=cs></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="http://www.google.com/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="http://www.google.com/search" target="_blank">
<input type=text value="" name=q size=55 maxlength=256><br>
<input name=btnG type=submit value="Vyhledat Googleem">
<input name=hl type=hidden value=cs></form>

A mohlo by to fungovat. Zkuste.


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:

http://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

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="http://www.atlas.cz/search.asp" method="get">
<input type="text" name="searchtext" size="12">
<input type="submit" value="Najdi na Atlasu" >
</form>

, zkuste si to.

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 zaměňovat třeba u PHP).

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

Hledání práce na Jobpilot

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

Práce v Jobpilotu: , zkuste.

Action nám nyní míří na soubor s příponou phtml, což je PHP skript. Proto je nyní možné 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é $query. 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="dusan.pc-slany.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 tomto serveru:
, 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 lomítka.) 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. 

SMS na Oskara

Z adresy http://sms.oskarmobil.cz/s_main.php3 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):

  

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 mě straší, 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á bude hlásit, ž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ů). Podle nich jsem si kdysi udělal vyhledávací centrálu

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 

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

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

<form action="http://search.seznam.cz/search.cgi" target="_blank">
V katalogu Seznamu: <input name="w">
<input type="hidden" name="min" value="l-s-c-k">
<input type="submit" value="Hledej!">
<form>

V katalogu Seznamu:

Předhozí: Detaily formulářů, zdokonalení vzhledu

Vizte též: Úvod do formulářů, Formuláře v HTML, Služby vzdálených serverů, Vytěžování stránek, Vyhledávací roboti

Píše Yuhů
dusan@pc-slany.cz
mail formulářem
Jak psát web O tvorbě, údržbě a zlepšování internetových stránek.

Základy HTML CSS FrontPage Hledání

Obsah

Hlavní stránka

Novinky

FAQ

Download

Zdroje

Hledání


Rozšířené

Základní kurs

Jak udělat stránku

Základy HTML

Publikování

Zásady psaní

Editory

Různé prohlížeče

Editory

FrontPage 2000

FP Editor 98

Word 97

FrontPage Express

HTML tipy

Příprava obrázků

Obrázky

Pozadí

Odkazy

Vychytávky odkazů

Záložky

Aktivní mail

Tabulky

Úprava tabulek

Novinky tabulek

Design tabulkami

Rámy

Formátování rámů

Rámy nepoužívat

Iframe

Formuláře

Formuláře v HTML

Dokonalé formuláře

Zápis barev

Definice

Formátovací chyby

Jak udělat levé menu

Vytěžování stránek

Provoz webu

Rychlost stránek

Vzdálené služby

Vyhledávače

Katalogy

Správa souborů

Ikona stránky

Obsah / forma

Čeština

Chyby češtiny

Tabulky kódování

Meta tagy

Nastavení serveru

Programování stránek

Začátky PHP

Možnosti PHP

Používání prohlížeče

CSS styly

CSS styly

Úvod do CSS

Struktura textu

CSS prakticky

PŘEHLED VLASTNOSTÍ CSS

Složitější deklarace

Délkové jednotky

Pozicování

Sloupce pozicováním

Okraje objektů

Odlišení prohlížečů

Omezení CSS

Odlišný tisk

Dynamické HTML

Filtry

Příklady filtrů

Různé barvy odkazů

Barva rolovací lišty

 


Jak psát web: http://dusan.pc-slany.cz/internet/

Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz

Poslední aktualizace 12.01.2002