Bongeszoadatok kinyerese

Penteken elkezdtem dolgozni egy miniprojekten. Tortent ugyanis az eset, hogy meguntam, hogy a supportnak sokadszorra kell elmagyaraznia az ugyfelnek, hogyan tudjak kideriteni a bongeszoverziojat. Ennek folyomanyakepp szuletett a kovetkezo oldal: http://www.whatismybrowserversion.com/

Ez termeszetesen meg csak egy elso verzio, a kesobbiekben tervezek beletenni egy e-mail kuldesi lehetoseget, hogy masolni se kelljen. Bugokat, feature igenyeket GitHubon lehet jelezni.

Hozzászólások

Vannak erre már nagyon jó és naprakész dolgok. Pl.: mobile device esetén a wurfl (http://wurfl.sourceforge.net/)
De van még egy halom. Sokkal több adatot nyerhetsz ki ilyenekből mint magából a böngészőből:)

ééértelek:)
A mit tud/mit tud ugyan az volt az én szempontomból, de így már megint más a helyzet. A wurfl és társai azért jók, mert elég sok olyan propertyt tudsz kinyerni a db-ből, amire js-ből csak konkrét beépítések árán tudsz tájékozódni

Állítólag az én Arch/Midori párosom valójában OSX/Safari...
--
Fight / For The Freedom / Fighting With Steel

Bug: IE lenyeli a sortöréseket. :)

Hint: textarea innerHTML esetén \n helyett <br /> kellene.

Annak ellenere, hogy a weboldal forrasaban benne van, a CSS transitions es a Websocket support sorok nem jelennek meg a textareaban.

Ugyanis a 139-es sorban levo

var transitions=array();

sor hibat okoz, hiszen

new Array()

-jel kellene letrehozni a valtozot, ugyanugy, mint az xhr eseteben.

Mindez Chrome alatt.

- Szerintem ha nincs IPv6 cime az ugyfelnek, ne szerepeljen ilyen mezo.
- PRE/CODE jobb lenne, a kesobbiekben megvalositando email kuldo funkciot ugysem erdekli, mi van benne, jobbra fel egy kis paste flash, es kesz is. Esetleg felkotsz ra egy Syntax Highligher -t, es kesz.
- Esetleg lehetne lokalizacio :-)
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Rovidebb url :) ?
Mire ezt a telefonban lediktalom egy csak magyarul tudo ugyfelnek...

Ettol fuggetlenul koszi, jo otlet!

--
http://www.micros~1

Már látom is a support beszélgetés:
- Üsse be ezt....
- Megvan.
- Mit írt ki?
- Mozilla5-ös.

(User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1)

Amúgy jó kis cucc, köszönjük :)

De kozben mar kuldtem neked egy kis improvementet.

Viszont vagy csinalj valamit a PHP fajl formazasaval, vagy oszd meg a netbeans projektet hozza, mert keptelen voltam ravenni a netbeans-t (es a vimet is) hogy ne csinaljon olyan valtozast, ami elut a coding style-tol. Igy is ment fel par whitespace change, azert sorry, de nem volt turelmem megnezni, hogy mi a banat baja van neki.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Latom unatkozol. Kaptal meg egyet.

Az IE-s fixert meg kulon koszi.

Ha esetleg megengeded, en megformazom neked a PHP-t, csak akkor addig varj barmilyen modositassal, mig azt a PR-t felkuldom.

Nem is a PHP formazasaval van alapvetoen a baj, hanem van par extran behuzott sor, amit meg a NetBeans se kepes ertelmesen detektalni.

Illetve gondolkodok, hogy ki kene szedni ezeket a scripteket kulon fajlba.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Esetleg felvehetnel par pluszt a detektalando dolgok koze:
(nemelyik maceras, tudom)
-Flash plugin van-e telepitve (licenchuszar Linux disztrok, iShit, stb..)
-Java Applet (plugin) mukodik-e - ez is fontos lehet, ha az alkalmazasodhoz kellene
-van-e beallitott proxy - ez nem trivialis, de szamithat vallalati kornyezetben (szivtunk mar ilyesmivel, bongeszobol el lehetett erni az oldalunkat, a sajat programbol meg nem, ugyanarrol a geprol)

-ha a serverre at tud kerulni az adat a felhasznalo kozremukodese nelkul (ajax pl.), akkor meg tudod allapitani a bongeszo tudasat server oldalon anelkul, hogy mailkuldessel szenvedne az illeto

-do not track?
-egyes pluginek/extensionok telepitese (ha van ra mod, pl. ABP, flashblock, user agent switcher es tarsai)

--
ezt tényleg ennyire nem értitek? - turdus :)

1) fixed
2) fixed
3) hu, azt nem biztos, hogy js-bol ki lehet olvasni, illetve a HTTP headerekbol is necces, mert sok proxynal meg lehet mondani, hogy abszolut transzparens legyen. Ja, es a transzparens proxy (tehat ami routinggal/iptablessel megy arra) ugyse fogod tudni megmondani. Erdekes feature, de en nem latom, hogy meg lehet-e csinalni, es ha igen, van-e ertelme, amikor eleg sok esetet nem tudsz lefedni vele.
4) en is erre gondoltam, de az oldalnak akkor is mukodnie kellene, ha nincs JS. Ez viszont problema. Megoldaskent talan lehet egy sima submit gombot is rakni a textboxhoz, es az kuldene mailt. Persze kerdes, kinek kuldje. Ez egy altalanos site, nem cegspecifikus. Necci.
5) Marmint a headerre gondolsz? Megfontolando. Update: megvan, elfogadasra var.
6) ez megint necces. Firefoxban mondjuk talan lehet. IE-ben szerintem nem. Chrome plane.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Fuu, belemelegedtem. Azert kialts ram, amikor sok vagyok... :-)

Kuldtem fixet az IE problemara (IE 7 alatt nem oldja meg a csere a gondot), keszul egy .NET fix, illetve tervezgetek egy atstrukturalast is, de ahhoz kell a #11 elfogadasa, mert azt rendeztem at. Es most le is allok, amig fel nem mennek a valtozasok :-)
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

„What Is My Browser Version? --- undefined”
Pediglen: User Agent: Opera/9.80 (X11; Linux x86_64; Edition Next) Presto/2.12.378 Version/12.50

--
The Elder Scrolls V: Skyrim

Akartam én is szólni miatta valamikor hajnalban mert akkor vettem észre. De nagyon hajnal volt :)
Egyébként ezután direkt megnéztem, Ephiphany 2.30.6 -ra 'Apple Safari 531.2+'-t és ezt írja:
User Agent: Mozilla/5.0 (X11; U; Linux i686; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.6
A Flash verziót csak ezen írja ki, Opera és FF alatt üres a mező Már nem.
(azért legyen itt az operás fejlécem is: 'User Agent: Opera/9.80 (X11; Linux i686; U; en) Presto/2.10.289 Version/12.02' )
--
AGA@
Fork portal és az egyik logóm :)

Az Epiphany-t is felvesszuk, de kozben mar folyamatban van egy ertelmesebb infrastruktura kialakitasa. Ha a tovabbiakban is kuldtok be UA stringeket, annak orulunk, de ne varjatok gyors fixalast. Par napon belul meglesz.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Google Chrome 18.0.966.0 -nak mond, pedig Maxthon 3.4.5.2000 vagyok! :)

User Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12

navigator.appVersion: 5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12

Általánosítsuk picit a problémát. Sok weboldal csak a népszerű böngészőket támogatja, ezért a kevésbé népszerű böngészők a böngészőmotornak megfelelő népszerű böngésző nevét is elhelyezi a user-agent stringben. A detektáló script az első találattal azonosítja a böngészőt, így születnek ezek a hibás detektálások. Megoldás lehet, ha nem az első, hanem az utolsó találattal azonosítaná a böngészőt a script, így az tetszőlegesen specializálható ezen kevésbé népszerűbb böngészők azonosítóival.

Nem a user-agentben elfoglalt pozícióra gondoltam. Ha az else-eket kivennéd az if-ek elől, és a vizsgálati sorrend a népszerű -> kevésbé népszerű sorrendben történne, akkor könnyedén lehetne bővíteni bármilyen böngészővel a getRealBrowser() fv-t. Szerk: Vagy úgy is lehet, hogy maradnak az else-ek, és a kevésbé népszerű -> népszerű sorrendben történik a vizsgálat.

Pl. SeaMonkey esetén:
user-agent string: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1


...
//ez true
if(match = ua.match(/Firefox[\s\/]([\d+\.]+)/)) {
	retobj.name = "Mozilla Firefox " + match[1];
	retobj.cssClass = 'firefox';
}
...
//de ez is true
if(match = ua.match(/SeaMonkey[\s\/]([\d+\.]+)/)) {
	retobj.name = "SeaMonkey " + match[1];
	retobj.cssClass = "seamonkey";
}
...

Jelenleg kevesbe nepszeru -> nepszeru iranyban tortennek az ellenorzesek, else-vel, pont azert, mert a masik irany nagyon esetleges talalatokat adna, ugyanis a nepszerueken belul mar nem lehet igazan sorrendet felallitani. Elegge sztochasztikus, hogy az ilyen retegbongeszok, mint pl. a fent emlitett Maxthon is, milyen sorrendben fogjak a nepszeru bongeszok azonositoit linkelni. Azon kivul annyi van beloluk, mint egen a csillag. Ha nincs ra regex, akkor sorrendtol fuggetlenul is hulyeseg fog kijonni azonositasra.

A hetvegen nekiulok rendberakni ezt az erzekelo rendszert, modularizalom, es megprobalok valami heurisztikat belevinni a dologba, hogy pl. ha kivesszuk az ismert azonositokat es marad valami akkor az legyen azonositokent feltuntetve.

Az mar csak hab a tortan, hogy az ilyen retegbongeszok mindenkepp szivni fognak, mert heurisztika mellett nem biztos, hogy lesz ikon hozzajuk. Akkor meg majd azon megy a siras, hogy nekem miert nincs ikonom. Szoval, nem lehet igazsagot tenni... nehez ugy.

Holnap kitalalok ra valamit, igerem.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Annyit tudok még tenni, hogy a jó régi Laposon lévő kitudjahány böngészőn kipróbálom, és idecopyzom mit ír róla. Nem frissek, de talán mutatnak majd valami logikát. Akkor nekem is tesztek miatt voltak csak fent, bár csak Operát, FF-et IE-t használtak az ügyfelek, illetve egy valaki Ephiphany-t, de hangosabban szidott minket ha nem ment vele mint a többiek összesen :)
--
AGA@
Fork portal és az egyik logóm :)

Nem vagyok GIThubon, ezért írtam ide. (Bár már kellett volna párszor). Viszont csak elynks meg Konqueror az ami más lehet mint ezek. Iron (chrome fork) valamiért sosem indult nálam, pedig használják páran. Megnézem mi van már meg GIThubon.
--
AGA@
Fork portal és az egyik logóm :)

Es hogy zarod ki oket? Marmint, arra sincs garancia, hogy egy verzion belul fix a sorrend.

Hidd el, ez nem egy bazi nagy kapcsolo, hogy ha akarom van, ha akarom nincs, sokkal nehezebb kezelni. Vagy globalisan nem lesz ilyen feature, vagy bevallaljuk, hogy neha hibazunk.

Egyebkent a retegbongeszok tobbek kozt azert rakjak bele a fejlecbe, hogy ok mivel kompatibilisek, mert azzal kompatibilisek - vagy legalabbis megprobalnak azok lenni. Ha fogalmat kell alkotni a user kornyezeterol, mar az is eleg lehet, hogy pl. WebKit vagy Gecko engine van benne. Az, hogy minnel akkuratusabb legyen a cucc, az mar igazabol csak egy eyecandy.

Ezzel nem azt akarom mondani, hogy nem cel a pontossag, csak vannak egy bizonyos hatar, ami felett mar nem eri meg.
Pl. itt van a gepemen a Qt forrasa, benne a demo browser alkalmazassal. Ennek van valami UA stringje. Ha mondjuk az osszes olyan orultet beszamitom, mint amilyen en vagyok, vilagszinten hasznalhatjak olyan otvenen. De mondjuk legyunk optimistak, szazan hasznaljak. Erdemes-e tamogatni? Igen. De nem feltetlen kiemelkedoen.
Mondok mast. Hasznalok elinkset, JS tamogatassal. A vilagon korulbelul szazezer ember hasznalhat elinkset. De legyunk optimistak, felmillio ember vilagszerte. Meg ez sem az a kategoria, amit erdemes kiemelkedoen tamogatni. Foleg, hogy a 75%-nak nincs JS tamogatasa, mert viszonylag keves binaris disztro engedelyezi azt benne.

Vagyis azt meg tudom igerni, hogy a bejelenteseket komolyan vesszuk, es ha nincs tamogatva a bongeszo, elobb-utobb tamogatva lesz, nevvel, ikonnal, szepen, ahogy kell. De rinyalni ne tessek, hogy engem se ismert fel, meg engem se. Mert azzal nem vagyunk elorebb.

Hidd el, egyikunk se most kezdett a webre dolgozni, pontosan tisztaban vagyunk vele, hogy mit szeretnenk, es hogy mik a korlatok.

Nagyon halasak vagyunk a bekuldott user agent stringekert, nagyon sokat tesztek ezzel a projektert, de nem tudjuk a sajat arnyekunkat tokon rugni. Akkor se, ha nagyon szeretnenk.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

"Es hogy zarod ki oket? Marmint, arra sincs garancia, hogy egy verzion belul fix a sorrend."


if(match = ua.match(/^Mozilla/5.0 \(.*\) Gecko/\d{8,14} Firefox/([\d+\.]+)$/)) {
	retobj.name = "Mozilla Firefox " + match[1];
	retobj.cssClass = 'firefox';
}

Persze ezt lehet tovább pontosítani (pl. a gecko mögött álló szám egy dátum+idő), vagy a zárójelen belüli részt, meg a speciális eseteket lekezelni. De ha így detektáltok az a firefoxok túlnyomó többségét megfogja, de semmi mást (kivéve, ha valaki direkt firefoxnak akar tűnni).

Nem akartam én felróni nektek semmit, én is tudom, hogy nem lehet mindent támogatni. Ezért írtam olyan megoldást, ami ugyan nem mindig ad megoldást, de amikor ad, akkor nem téved.

Sajnos nem. Van olyan bongeszo, ami pont ebben a sorrendben nyomja, mert firefoxnak akar feltunni, azaz pont ugyanaz lenne a helyzet mint most: jonnenek a panaszok, hogy de ez azt irja, hogy Firefox vagyok, pedig nem.

A jelen peldaban asszem pl. a regebbi, Firefox alapu Flock az pont ilyen sorrendben nyomta - egyszeruen azert, mert forras szinten Firefox alapu volt a szentem, es valahol a vegen kerult utana az, hogy o valojaba Flock/1.2.473
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Csendes irodáért cserébe a felhőkarcoló tetején, ahol lesz majd az irodánk, amikor megveszi ezt a csodát a google/apple/facebook/foobar, könnyes szemmel megosztom ama ötletemet, hogy egy jpg/png/canvas/css QR kódot a user arcába tolva, aláírva hogy "-Fénykképezzed le, oszt küldd el, köszike!" gyorsan és biztonsgosan lehet online thread-et nyitni az ügyfél felé, és mindenki örül, nomeg lehet neki írni emailben választ, hogy, a proxy ami mögött ül beletúrt a http headerbe és Close-olja a Keep-Alive -okat, azért szóljunk a rendszergazdának, mert nem megy a adzsaxunk csak csigatempóban. :)

A QR kódot a böngsző rajzolná ki a textarea helyett. Abban lenne az infó és a mobillal "postolná" el neked. :)
Előny, hogy bárhol működne, akár egy kiosk-os vacakról is el tudná küldeni, hogy na, itt nem megy. Már amennyiben ott begépelhet bármilyen url-t. :)

Ha nincs lelevelezőkliense akkor te a szerverről küldöd az emailt magadnak?

Látom nem lesz irodám. Oké, akkor csak egy ingyen kikötőhelyet a hajómnak a Bahamákon, oké?

Otlet: lehessen olyan linket generalni ami tartalmaz egy email cimet es egy targyat, es azonnal tovabbitja is az adatokat a megadott cimre a megadott targgyal. Ennek olyan elonye lenne, hogy email-ben intezett support eseten a usernek csak kattintania kene. Esetleg egy figyelmeztetes lehetne elotte, de az sem muszaj, hiszen barki mas is csinalhatna egy ilyen oldalt a figyelmeztetes nelkul...
Amugy klassz!

Mobilról így könnyebb (hosszú a domain :P ):