[ specs ] [ Tweaker gallery ]
[ specs ] [ Tweaker gallery ]
Wat je zou kunnen doen (doe ik ook op een site) is een array maken met searchengines (hostnames) en bijbehorende variabelenamen met de search phrases.
Hierbij de array die ik gebruik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| $se["yahoo"] = "p"; $se["altavista"] = "q"; $se["google"] = "q"; $se["ilse"] = "q"; $se["eureka"] = "q"; $se["lycos"] = "query"; $se["hotbot"] = "MT"; $se["msn.com"] = "MT"; $se["infoseek"] = "qt"; $se["webcrawler"] = "searchText"; $se["excite"] = "search"; $se["netscape"] = "search"; $se["mamma"] = "query"; $se["alltheweb"] = "query"; $se["northernlight"] = "qr"; $se["uzoekt"] = "searchstring"; $se["vindex"] = "in"; $se["vinden"] = "query"; $se["ask"] = "ask"; |
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
| $this->searchEngines = array("search.sli.sympatico.ca/" =>
array("engine" => "Sympatico",
"query1" => "query=",
"query2" => "",
"url" => "http://www1.sympatico.ca/"),
"www.search123.com/cgi-bin/" =>
array("engine" => "Search123",
"query1" => "query=",
"query2" => "",
"url" => "http://www.search123.com/"),
"search.dogpile.com" =>
array("engine" => "Dogpile",
"query1" => "q=",
"query2" => "",
"url" => "http://www.dogpile.com"),
"vivisimo." =>
array("engine" => "Vivisimo",
"query1" => "query=",
"query2" => "",
"url" => "http://www.vivisimo.com"),
"webindex.sanook.com" =>
array("engine" => "Sanook",
"query1" => "d1=",
"query2" => "",
"url" => "http://www.sanook.com/"),
"tiscali.cz/search" =>
array("engine" => "JANAS",
"query1" => "query=",
"query2" => "",
"url" => "http://www.tiscali.cz/"),
"teoma.com/gs?" =>
array("engine" => "Teoma",
"query1" => "terms=",
"query2" => "",
"url" => "http://www.teoma.com/"),
"redbox." =>
array("engine" => "RedBox",
"query1" => "srch=",
"query2" => "",
"url" => "http://www.redbox.cz/"),
"globetrotter.net" =>
array("engine" => "Telus Network - Globetrotter.net",
"query1" => "string=",
"query2" => "",
"url" => "http://www.globetrotter.net/"),
"myto.com" =>
array("engine" => "Telus Network - myTO.com",
"query1" => "string=",
"query2" => "",
"url" => "http://www.myto.com/"),
"alberta.com" =>
array("engine" => "Telus Network - Alberta.com",
"query1" => "string=",
"query2" => "",
"url" => "http://www.alberta.com/"),
"mybc.com" =>
array("engine" => "Telus Network - myBC.com",
"query1" => "string=",
"query2" => "",
"url" => "http://www.mybc.com/"),
"monstercrawler." =>
array("engine" => "MonsterCrawler",
"query1" => "qry=",
"query2" => "",
"url" => "http://www.monstercrawler.com/"),
"allthesites." =>
array("engine" => "All the Sites",
"query1" => "query=",
"query2" => "",
"url" => "http://www.althesites.com/"),
"suche.web" =>
array("engine" => "Web.de",
"query1" => "su=",
"query2" => "",
"url" => "http://www.web.de/"),
"rediff." =>
array("engine" => "reDiff",
"query1" => "MT=",
"query2" => "",
"url" => "http://www.rediff.com/"),
"evreka." =>
array("engine" => "Evreka",
"query1" => "q=",
"query2" => "",
"url" => "http://evreka.suomi24.fi/"),
"findia." =>
array("engine" => "Findia",
"query1" => "query=",
"query2" => "",
"url" => "http://www.findia.net/"),
"av.yahoo" =>
array("engine" => "Yahoo",
"query1" => "p=",
"query2" => "",
"url" => "http://www.yahoo.com/"),
"google.yahoo" =>
array("engine" => "Yahoo",
"query1" => "p=",
"query2" => "",
"url" => "http://www.yahoo.com/"),
"yahoo." =>
array("engine" => "Yahoo",
"query1" => "q=",
"query2" => "",
"url" => "http://www.yahoo.com/"),
"aol." =>
array("engine" => "AOL Search",
"query1" => "query=",
"query2" => "",
"url" => "http://search.aol.com/"),
"about." =>
array("engine" => "About",
"query1" => "terms=",
"query2" => "",
"url" => "http://www.about.com/"),
"altavista." =>
array("engine" => "Altavista",
"query1" => "q=",
"query2" => "",
"url" => "http://www.altavista.com/"),
"directhit." =>
array("engine" => "DirectHit",
"query1" => "qry=",
"query2" => "",
"url" => "http://www.directhit.com/"),
"lk=webcrawler" =>
array("engine" => "Webcrawler",
"query1" => "s=",
"query2" => "",
"url" => "http://www.webcrawler.com/"),
"excite." =>
array("engine" => "Excite",
"query1" => "search=",
"query2" => "",
"url" => "http://www.excite.com/"),
"alltheweb." =>
array("engine" => "All the Web",
"query1" => "query=",
"query2" => "q=",
"url" => "http://www.alltheweb.com/"),
"netscape." =>
array("engine" => "Netscape",
"query1" => "search=",
"query2" => "",
"url" => "http://search.netscape.com/"),
"google." =>
array("engine" => "Google",
"query1" => "q=",
"query2" => "query=",
"url" => "http://www.google.com/"),
"?partner=go_home" =>
array("engine" => "Infoseek/Go",
"query1" => "Keywords=",
"query2" => "",
"url" => "http://www.go.com/"),
"nbci." =>
array("engine" => "NBCi",
"query1" => "Keywords=",
"query2" => "",
"url" => "http://www.nbci.com/"),
"goto." =>
array("engine" => "GoTo",
"query1" => "Keywords=",
"query2" => "",
"url" => "http://www.goto.com/"),
"hotbot." =>
array("engine" => "HotBot",
"query1" => "MT=",
"query2" => "",
"url" => "http://hotbot.lycos.com/"),
"iwon." =>
array("engine" => "IWon",
"query1" => "searchfor=",
"query2" => "",
"url" => "http://home.iwon.com/index_gen.html"),
"looksmart." =>
array("engine" => "Looksmart",
"query1" => "key=",
"query2" => "",
"url" => "http://www.looksmart.com/"),
"lycos." =>
array("engine" => "Lycos",
"query1" => "query=",
"query2" => "",
"url" => "http://www.lycos.com/"),
"msn." =>
array("engine" => "MSN",
"query1" => "q=",
"query2" => "",
"url" => "http://search.msn.com/"),
"localhost" =>
array("engine" => "localhost",
"query1" => "q=",
"query2" => "",
"url" => "http://localhost/"),
"dmoz." =>
array("engine" => "Dmoz",
"query1" => "search=",
"query2" => "",
"url" => "http://www.dmoz.org/")); |
sorry voor de vele spaties mja dat zit in me modules
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen
't Is maar dat je het weet
[ Voor 7% gewijzigd door elmer25 op 08-05-2003 10:27 ]
Zo lang IE nog netjes de referrer (met 2 r-en) meestuurt, geldt dat meteen voor ruim 95% van de internetbevolking.elmer25 schreef op 08 May 2003 @ 10:26:
Ik wilde een zelfde soort script maken, maar ben daar maar mee gestopt toen ik erachter kwam dat de referer (met 1 r) door steeds minder browsers meer wordt doorgegeven (uit privacy overwegingen...).
't Is maar dat je het weet
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Uiteindelijk ben ik erachter dan Norton Internet Security de Referrer bij mij weg filterde. Dit is in te stellen in de Privacy settings van NIS. Op deze manier laat ik dus nergens een referrer achter en ik had alleen op m'n eigen machine getest.[...]
Zo lang IE nog netjes de referrer (met 2 r-en) meestuurt, geldt dat meteen voor ruim 95% van de internetbevolking
Mijn IE (v6.0...) stuurt al geen referrer mee, en als ik de info op het net wat mag geloven dan is dat iets wat steeds meer browsers, ips, firewalls, etc doen. Erg jammer voor ons programmeurs, maar helaas doe je er niks tegen
[ Voor 43% gewijzigd door elmer25 op 27-05-2003 16:25 ]
[ Voor 126% gewijzigd door elmer25 op 08-05-2003 11:23 ]
Hoe doe je dat dan? Dat krijg ik (zonder firewall) niet voor elkaar in IE6.
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Bedankt voor die lijsten, dat scheelt in iedergeval een hoop uitzoekwerk.
En bij mijn weten worden referrer's nog altijd doorgegeven. Een paar dingen waar je aan moet denken: in PHP wordt referer inderdaad met 3 r's (ipv. 4) geschreven. In JavaScript is het wel correct: referrer. Bovendien is dit veld alleen ingevuld als een men op de huidige pagina kwam door op een link te klikken en niet als de url direct in de browser is ingevuld.
Ik kan me niet voorstellen dat een firewall aan dit soort dingen zit te prutsen - die houdt zich meer bezig met de raw TCP/IP packages.
Ik zal voor wat betreft de referrer m'n code eens nakijken in Netscape en Mozilla. Hoe dan ook: het zou erg vervelend zijn als men zou besluiten om support voor referrer's te droppen, aangezien er erg interessante informatie uit te halen is.
Bedankt allemaal.
[ specs ] [ Tweaker gallery ]
Searches kunnen inderdaad natuurlijk uit veel verschillende landen komen, dus het is wel zo fijn als je bijvoorbeeld google.be ook accepteerd.
En van referrers die in de browsers van tegenwoordig niet meer meegegeven worden daar geloof ik niet zo erg in. Met de standaard instellingen geven alle mij bekende browsers keurig een referrer mee.
http://www.google.co.uk/
De op-1-na laatste waarde na een explode, zou dan 'co' opleveren.
Maargoed, daar valt wel omheen te programmeren.
Ik denk dat ik er zo wel uit kom...
* Explore gaat weer eens verder mieren
Beetje moeilijk debuggen, die se's, zolang m'n page nog niet in google staat...
[ specs ] [ Tweaker gallery ]
Ja das waarExplore schreef op 09 May 2003 @ 17:01:
Ja, de uitleg van Bosmonster klopt dus niet helemaal. Dit bestaat namelijk ook nog:
http://www.google.co.uk/
De op-1-na laatste waarde na een explode, zou dan 'co' opleveren.
Maargoed, daar valt wel omheen te programmeren.
Ik denk dat ik er zo wel uit kom...
* Explore gaat weer eens verder mieren
Beetje moeilijk debuggen, die se's, zolang m'n page nog niet in google staat...
Verwijderd
valt toch easy op te lossen... gewoon met * de 'achterkant' variabel houden dus dat de extentie niet boeitBosmonster schreef op 09 mei 2003 @ 17:25:
[...]
Ja das waarDomme domein constructies van die landen ook
[ Voor 16% gewijzigd door Verwijderd op 09-05-2003 19:28 ]
niet altijd helemaal safe maar dat is het noit
1
| $cnt_word = substr_count($var,"google"); |
ik heb dit niet getest hoor dus ik weet niet of het werkt
Verwijderd schreef op 09 mei 2003 @ 19:24:
valt toch easy op te lossen... gewoon met * de 'achterkant' variabel houden dus dat de extentie niet boeit
Eerder genoemde lijst met search-engines en hun query-variable blijkt niet helemaal correct te zijn. Ik heb het eea. nog eens nageplozen en aangevult en ben uiteindelijk tot deze lijst van 'meest voorkomende search-engines' gekomen. De rest boeit me eigenlijk ook niet zo.
Dus ter info:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| $se["alltheweb"] = "query"; $se["altavista"] = "q"; $se["aol"] = "query"; $se["ask"] = "ask"; $se["dmoz"] = "search"; $se["dogpile"] = "q"; $se["eureka"] = "q"; $se["excite"] = "search"; $se["findwhat"] = "MT"; $se["freeserve"] = "q"; $se["google"] = "q"; $se["hotbot"] = "query"; $se["ilse"] = "q"; $se["infoseek"] = "qt"; $se["kanoodle"] = "query"; $se["looksmart"] = "key"; $se["lycos"] = "query"; $se["metacrawler"] = "qkw"; $se["msn"] = "q"; $se["netscape"] = "search"; $se["overture"] = "keywords"; $se["uzoekt"] = "searchstring"; $se["vinden"] = "query"; $se["vindex"] = "in"; $se["webcrawler"] = "qkw"; $se["yahoo"] = "p"; |
Edit - een dag later: ik test nu net nog een paar van bovenstaande se's, en nu blijken ineens een paar van die search-variabelen anders te zijn. Wat is dit nou weer voor een vaag gedoe?!
[ Voor 58% gewijzigd door Explore op 11-05-2003 12:49 ]
[ specs ] [ Tweaker gallery ]
Wanneer is referrer schrijf, bedoel ik ook referrer en niet useragent. In het script wat ik gemaakt heb lees ik de servervariabele HTTP_REFERER uit en sla die op in een stats database. Maar de waarde is in ongeveer 90% van de gevallen leeg. Slechts bij een enkele gebruiker wordt er een waarde uitgelezen en opgeslagen.ZeRoXcOoL schreef op 08 mei 2003 @ 13:26:
Ik denk dat hij bedoelt dat z'n IE geen useragent meestuurt, of in ieder geval een veranderde...
Verder zijn er wat zogenaamde 'privacy' programma's en virusscanners (Norton bv), die ervoor zorgen dat je browser nooit een normale referer meegeeft, of dat je deze zelf op kunt geven.
Komt dit niet doordat bezoekers van je site de url direct in de adresbalk kloppen ipv dat ze van een andere site afkomen?elmer25 schreef op 12 May 2003 @ 13:09:
[...]
Wanneer is referrer schrijf, bedoel ik ook referrer en niet useragent. In het script wat ik gemaakt heb lees ik de servervariabele HTTP_REFERER uit en sla die op in een stats database. Maar de waarde is in ongeveer 90% van de gevallen leeg. Slechts bij een enkele gebruiker wordt er een waarde uitgelezen en opgeslagen.
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Ik heb dit net kunnen conformeren.Bosmonster schreef op 12 May 2003 @ 14:00:
Ik kwam er ook achter dan je geen REFERER meekrijgt als je in je site javascript gebruikt voor het veranderen van pagina met bijvoorbeeld location.href. Dit in ieder geval in IE6.
Dat is wel jammer, aangezien ik net van plan was de referrer te gebruiken om na te gaan of een bezoeker uniek is: als 't domain in de referrer-URL 't domain is waar de site op draait, dan geldt het als extra hit/pageview en niet als unique visitor.
Dus dit werkt ook niet als waterdicht idee. Doh!
[ specs ] [ Tweaker gallery ]
Benodigheden:
- Cronjobs
- php
- eventueel een databeest
Eerst split je de refer
1
| $deel = explode('.', $HTTP_REFERER); |
nu wordt in het array $deel de verschillende delen van je domein neergezet. Ik heb volgens mij nog geen zoekmachine gezien die meer dan 1 punt voor de naam heeft staan.
Dus http://www.google.com. http://www.altavista.com etc hiervan kan je het 2e deel ($deel[1] in php) gebruiken om de naam te checken.
Als je dan samen met een array met zoekmachines alles checkt
1
2
3
4
5
| if ($array[$deel[1]] != '') { $refer = $deel[1]; } else { Mysql_query("insert into zoekmachines_ruw (id, naam) values ('0', $deel[1])"); } |
in je array staan dus alle zoekmachines als volgt:
1
2
3
4
5
| $array[google] = 1; $array[zoeken] = 1; $array[vinden] = 1; $array[altavista] = 1; etc... |
Je kan nu een twee php pagina maken met daarin een script dat alle zoekmachines uit de database(ruwwe data) haalt, check op dubbele, een correct lijst, zonder dubbel in een nieuwe tabel zet : zoekmachines
je lijst van arrays update, door deze weg te schrijven naar een bestand (deze wordt geinclude in je pagina) en de oude tabel leeg te gooien.
Ik denk dat dit moet werken, mocht iemand er nog aanpassing op hebben dan horen we dat natuurlijk graag.
Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl
Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // Get parts of referrer $refparts = parse_url($_GET['ref']); // Get host name and split it $refhost = $refparts['host']; $hostparts = explode('.', $refhost); // Get host name without extension switch (count($hostparts)) { case 2: $searchengine = $hostparts[0]; break; case 3: case 4: $searchengine = $hostparts[1]; break; default: $searchengine = ''; break; } |
Works like a charm!
[ specs ] [ Tweaker gallery ]
1
2
3
| if (strpos($url['host'], $searchengine) > 0) { // zoekmachine aangetroffen } |
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Omdat je, als je 40 zoekmachines in je lijst hebt, je die functie ongeveer 20 keer moet aanroepen. Misschien wat te veel van het goede.bigtree schreef op 14 mei 2003 @ 23:35:
Waarom niet gewoon kijken of de substring 'google' in de hostname voorkomt? De kans op een www.google.altavista.com lijkt me niet zo groot, dus wat is er tegen het volgende:PHP:
1 2 3 if (strpos($url['host'], $searchengine) > 0) { // zoekmachine aangetroffen }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| <? // zoekmachines definieren $se["altavista"] = "q"; $se["google"] = "q"; // etc. // hostparts om te negeren $ignoreparts[] = 'www'; $ignoreparts[] = 'co'; $ignoreparts[] = 'org'; // etc. // Get parts of referrer $refparts = parse_url($_GET['ref']); // Get host name and split it $refhost = $refparts['host']; $hostparts = explode('.', $refhost); // laatste part negeren array_pop($hostparts); foreach($hostparts as $hostpart) { if (!in_array($hostpart, $ignoreparts) && array_key_exists($hostpart, $se)) { // search engine aangetroffen! } } ?> |
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Hetzelfde geldt voor de hostname. Met een substring haal je die ook veel sneller uit een url dan met parse_url.
Ik had even een benchmark gemaakt en dit leverde mij de volgende gegevens op:
url = "http://joop:wachtwoord@www.google.nl/search?q=hallo&ie=ISO-8859-1&hl=nl&lr=#halverwege"
Aantal iterations: 1000
parse_url tijd: 5,32
substr query tijd: 0,06
substr host tijd: 0,08
Iemand geïnteresseerd in die functies? Het lijkt me wel ontopic dus dan post ik ze wel.
[ Voor 4% gewijzigd door bigtree op 16-05-2003 10:12 . Reden: typo ]
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| function url_query($url) { $vraagteken_pos = strpos($url, "?"); if ($vraagteken_pos > 0) { $hekje_pos = strpos($url, "#", $vraagteken_pos + 1); $query = ($hekje_pos > $vraagteken_pos) ? substr($url, $vraagteken_pos + 1, ($hekje_pos - $vraagteken_pos - 1)) : substr($url, $vraagteken_pos + 1); } return $query; } function url_host($url) { if (substr($url, 0, 7) == "http://") { $at_pos = strpos($url, "@", 7); $dubbelepunt_pos = strpos($url, ":", ($at_pos > 0 ? $at_pos : 7)); $slash_pos = strpos($url, "/", 8); $start_pos = ($at_pos > 0) ? ($at_pos + 1) : 7; $eind_pos = ($dubbelepunt_pos > 0) ? $dubbelepunt_pos : $slash_pos; $host = ($eind_pos > 0) ? substr($url, $start_pos, ($eind_pos - $start_pos)) : substr($url, $start_pos); } return $host; } |
bugfix
[ Voor 10% gewijzigd door bigtree op 15-05-2003 19:06 ]
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Voor mijn stukkie code zou dit erg van pas kunnen komen, aangezien ik wil dat deze zo snel mogelijk werk. Ik ben dan ook druk bezig de code te optimalizeren.
[ specs ] [ Tweaker gallery ]