[php] referrer: search engine detectie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
The title says it all. Of niet: ik wil de referrer url scannen op aanwezigheid van een search-engine, zoals Google.

Nou zijn er echter zo enorm veel search-engines, dat ik die vanzelfdsprekend niet wil voorprogrammeren. Ik vraag me dan ook af of er iets is te bedenken waaraan te zien is of een url naar een search-engine wijst...?

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Je kan toch ook robots.txt gebruiken :?

Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Eh, ja, maar daar gaat 't niet om. Ik wil in een statistieken pagina bijhouden welke search-engine gebruikt worden en welke queries men invoerd om mijn site(s) te vinden... enzo...

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

Verwijderd

Wellicht kan je hier wat mee: http://www.psychedelix.com/agents.html

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
@MrX: Hij heeft het over search-engines, niet over spiders.

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:
PHP:
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";
'se' staat uiteraard voor 'search engine'. De key is de naam / domeinnaam van de search engine en de waarden zijn de gebruikte variabele-namen van de search phrases van de betreffende zoekmachines.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik dit zelf ;)

code:
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

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Even een opmerking over google. Hou er rekening mee dat je referrers kan krijgen van google met elke willekeurige extensie. Dus google.com, google.nl, google.de, google.be etc. Hoe ga je daar mee om?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • Twan V
  • Registratie: Oktober 2001
  • Laatst online: 16-09 15:39

Twan V

...en er stralend uitzien

Google heeft toch maar een database? (die op meerdere plaatsen gemirrord is om de portals op tempo te houden?)

Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen


Acties:
  • 0 Henk 'm!

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

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

[ Voor 7% gewijzigd door elmer25 op 08-05-2003 10:27 ]


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
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
Zo lang IE nog netjes de referrer (met 2 r-en) meestuurt, geldt dat meteen voor ruim 95% van de internetbevolking.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

[...]

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 :-(
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. :/

[ Voor 43% gewijzigd door elmer25 op 27-05-2003 16:25 ]


Acties:
  • 0 Henk 'm!

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

sorry...foutje

[ Voor 126% gewijzigd door elmer25 op 08-05-2003 11:23 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

Een dergelijke array als die van bigtree gebruik ik ook. Met parse_url kun je de domeinnaam simpel achterhalen van een referrer, welke je vervolgens kunt exploden op ".". De een-na-laatste in die array is dan altijd het extensie-loze domein, en hiermee kun je uit de array het juiste attribuut halen. Ook de attributen zijn met parse_url makkelijk terug te vinden.

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
elmer25 schreef op 08 May 2003 @ 11:20:
[...]
Mijn IE (v6.0...) stuurt al geen referrer mee
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.


Acties:
  • 0 Henk 'm!

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 19:14
Ik denk dat hij bedoelt dat z'n IE geen useragent meestuurt, of in ieder geval een veranderde...

zeroxcool.net - curity.eu


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Dus toch een lijst? Het leek me leuk om op eoa. manier rekening te houden met alle mogelijke searchengines - dus meer een algemeen algoritme. Maar ik begrijp dat zoiets niet vol te houden is, zolang men geen standaard verzint.

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 ]


Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Let bij Google ook even op queries ingevoerd met 'Zoek binnen resultaten', de woorden die daar nog ingevoerd worden komen niet achter de 'q' variabele, maar achter 'as_q'.

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.

Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
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... :|

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

Explore 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... :|
Ja das waar :) Domme domein constructies van die landen ook :P

Acties:
  • 0 Henk 'm!

Verwijderd

Bosmonster schreef op 09 mei 2003 @ 17:25:
[...]


Ja das waar :) Domme domein constructies van die landen ook :P
valt toch easy op te lossen... gewoon met * de 'achterkant' variabel houden dus dat de extentie niet boeit ;)

[ Voor 16% gewijzigd door Verwijderd op 09-05-2003 19:28 ]


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

kun niet beter kijken of een naam onderdeel voorkomt
niet altijd helemaal safe maar dat is het noit

PHP:
1
   $cnt_word = substr_count($var,"google");


ik heb dit niet getest hoor dus ik weet niet of het werkt

Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
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:

PHP:
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?! :? Zijn die dingen elke dag anders, ofzo? 8)7

[ Voor 58% gewijzigd door Explore op 11-05-2003 12:49 ]

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

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...
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.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

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.

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.

Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 18-09 08:38
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.
Komt dit niet doordat bezoekers van je site de url direct in de adresbalk kloppen ipv dat ze van een andere site afkomen?

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Ook een pagina die in een pop-up wordt geopend heeft vaak geen referrer.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
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.
Ik heb dit net kunnen conformeren.

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 ]


Acties:
  • 0 Henk 'm!

  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Ok, dit is een beetje een samenvoeging van alles. Ik heb het nog niet helemaal zelf uitgewerkt, maar volgens mij moet het wel werken.

Benodigheden:
- Cronjobs
- php
- eventueel een databeest

Eerst split je de refer

PHP:
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

PHP:
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:
PHP:
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


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

dat is inderdaad waar, maar dan werkt het ene laatste kiezen ook niet. Volgens mij is er geen eenvoudige oplossing, alleen een oplossing met een hoop programeerwerk

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
'k Heb nu dit:

PHP:
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 ]


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
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
}

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 23:25
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
}
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.

Verbouwing


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Wellicht is dan toch efficienter om alle parts van de hostname van de referrer te doorlopen, en als een part ongelijk is aan www, com, co, org etc, dan te kijken of hij voorkomt in de keys van $se. De laatste hostpart van de referer-host kunnen we altijd negeren. Bijvoorbeeld zo:
PHP:
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.


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Over efficientie gesproken.... parse_url blijkt zeer inefficient als je de referrers uit een database haalt met een paar duizend tegelijk. Om een query uit een url te krijgen kun je dan beter een functie maken die het gedeelte tussen '?' en '#' uit een url vist.

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.


Acties:
  • 0 Henk 'm!

  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

ik ben zeker geinteresseerd en waarschijnlijk andere mensen ook. Post de functies maar. Alvast bedankt

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Ok, hier komen ze. Let wel; dit werkt alleen bij geldige(!), http(!) urls. Bij referrer-scripts dus prima te gebruiken.
PHP:
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;
    }
edit:
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.


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Heb je die benchmark ergens online staan? Ik wil 'm wel eens in actie zien.
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 ]

Pagina: 1