
Ako odoslat/precitat data z webu (C#)
ahoj,
potreboval by som poradit, mam takyto kod (prakticky totozny s demom na msdn):
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("www.dovera.sk/overenia/overit-poistenca");
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0";
req.Timeout = 5000;
string postData = "rodne_cislo=1234567890";
byte[] send = Encoding.Default.GetBytes(postData);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = send.Length;
Stream sout = req.GetRequestStream();
sout.Write(send, 0, send.Length);
sout.Flush();
sout.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string responseString = sr.ReadToEnd();
Chodilo to bez problemov, teraz vsak uz nie. Najprv tam pribudol checkbox 'nie som robot' od google. Teraz tam ten checkbox uz nie je ale aj tak to nechodi. Rucne zadat na tom webe to ide.
Co s tym ma spolocne google? Su tam reklamy google na tom?
Zdrojak toho webu si si uz pozeral ze ci tam nepridali nejake dalsie (napr. nejake kontrolne) policka do toho formu?
Mozno to aj konktroluje nejaky cookie apod.
(skus si odsniffovat wiresharkom apod ze co robi ked to robis rucne)
Dik za reakciu, ked to prestalo fungovat tak na tu stranku pridali checkbox (overenie, ze nie som robot, powered by google ak si dobre pamatam, uz tam nie je teraz, neviem to na 100% ani to nie je dolezite).
Ziadne dalsie kontrolne pole tam nevidim. Skusal som aj cez privatne prezeranie v prehliadaci, to by nemalo ziadne cookie pouzivat, nie? Ale ze je tam nejaka kontrola/ochrana vylucit nemozem. Wireshark mne nepomoze, to by musel pozriet niekto, kto sa v tom vyzna.
Ja s webom prakticky nic nerobim ani do toho nevidim. Preto sa pytam skusenejsich, kde by mohol byt pes zakopany...
Ked do toho nevidis tak toho moc neurobis.
Na tom webe je v tom forme aj polozka datum, ten ale neposielas. Skus poslat aj ten. Nevidim tam ziaden checkbox od google.
P.S. ked tam budes posielat excessivne moc poziadaviek tak moze server reagovat rozne, trebars aj tak ze ti prestane posielat odpoved alebo moze vyhdzovat nejake checkboxy.
Ještě můžeš použít Chrome či Firefox s nějakou extension, který přesně analyzuje(vypisuje),
co se odesílá při požadavku.
Je možné, že tam dali např. nějakou session, či cookie, která se v prohlížeči aktivuje,
ale samotný POST z programu (výše) ji neobsahuje.
Nakonec samotná (stažená) odpověď může prozradit více.
//update
Trochu jsem se díval, vypadá to, jako by se výsledek dotahoval do
odpovědi přes Ajax. Čili (nově) odpověď neobsahuje tento údaj, ale
dotahuje si ho (zkráceně) někde přes JavaScript.
funguje mi to jednoducho cez curl, takze ziadne useragenty, cookies, referery ani ine veci v headri niesu potrebne,
je to jednoduchy POST formulara ale rodne_cislo a submit fieldy su potrebene:
Skus pridat mezdi tie postData aj ten 'submit' field.
Jasné. Už je pozdě, prdím na to.
Dakujem vsetkym za pomoc, funguje to po pridani toho submit.
Uz len tak pre zaujimavost, preco to predtym islo aj bez toho? Kedy submit musi byt a kedy nemusi?
Diky este raz!
Třeba to upravili tak, aby to bylo nutné.