Seite 1 von 2

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 13:40
von Nullpointer
ich weiß zwar, dass ich mein monatliches budget für regex-fragen in diesem forum schon lange verbraucht habe, aber es ist schon wieder zum :bad-words:

auf holzige weise frage ich die existenz von den typischen query-string parametern ab. zum beispiel:

$ref=~/q=/g oder $ref=~/p=/g

jetzt möchte natürlich noch den query-string extrahieren. also alles von hinter dem matchenden paramter bis zum nächsten '&'.

ich weiß, dass das ganze mit einer einzigen, zehn meter langen, regex zu machen ist, aber ich begnüge mich auch mit meiner schlumpflösung mit if abfragen. nur wie extrahiere ich den substring ?????

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Search String aus Referer extrahieren

Verfasst: 28.09.2005, 14:05
von cu-viper
hmm .. BIST DU WAHNSINNIG? <gg>

.. mal was konstruktives.
es haben ja vor dir schon ne menge leute geschafft - und zwar alle, die eine web-counter haben, der das auswertet. schau dir doch mal die quelltexte an und hol dir da inspirationen.
ich kann mir gut vorstellen, dass du die 2-3 quellcodezeilen nutzen darfst, wenn du die autoren fragst.

mfg stephan

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 14:14
von Nullpointer
naja. in einer hochsprache würde ich das selbst hinbekommen.
webalizer habe ich mir angeschaut, und das ist c quellcode.

wie gesagt, es geht nicht um performance oder guten code. es muß halt nur n' regex sein, den ich in mein dirty perl script schreiben kann.
irgendwie raffe ich das string extrahieren in perl nicht. komischerweise bin ich genau bei diesem thema noch auf keine brauchbare lösung im netz gestossen.

verschwörung.

aber was soll daran wahnsinnig sein? die interessanten suchmaschinen verwenden 2 oder 3 verschiedene paramter, die kann man doch easy abfragen.

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 14:21
von Nullpointer
suchet, so werdet ihr finden:
https://www.pgts.com.au/pgtsj/pgtsj0307a.html

jetzt muß ich den code nur noch verstehen ;-)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 14:33
von cu-viper
rofl - nix is schlimmer als den quellcode von jemandem anderen lesen und verstehen - besonders krass is da perl - nen php code oder so versteht man ja mal noch.

viel spass
mfg cu

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 14:39
von Nullpointer
naja nix gegen code-review...
in java oder vergleichbarem ;-)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 15:48
von robo
Aus meiner Bastelkiste:

Code: Alles auswählen

$sstr = &getparam &#40;$ref, "&#40;p|q|qr|qt|qry|query|query.?string|question|qkw|k|kw|key|keyword|&#91;Kk&#93;eywords|general|search|searchfor|s?string|su|w|word|words|ask|MT|suche|suchstr|suchbegriff|plz|title|terms?|swords?|searchval&#41;="&#41;;

sub getparam &#123;
  my $result = shift;
  my $parn = shift;
  $result =~ s/.*\?//;
  my @params = split &#40;"&", $result&#41;;
  $result = "";
  foreach my $param &#40;@params&#41; &#123;
    if &#40;$param =~ s/^$parn//&#41; &#123;
      $result = $param;
    &#125;
  &#125;
  $result = &decodeencodedstring &#40;$result&#41;;
  $result = &utf8_to_latin1 &#40;$result&#41;;
  return $result;
&#125;

sub utf8_to_latin1 &#123;
  my $string = shift;

  my $format = $ENV&#123;"UCFORMAT"&#125;||&#40;'%lx'&#41;;
  use bytes;
  $string =~ s/&#40;&#91;\xC0-\xDF&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;/sprintf &#40;"%c", hex&#40;sprintf&#40;$format,unpack&#40;"c",$1&#41;<<6&0x07C0|unpack&#40;"c",$2&#41;&0x003F&#41;&#41;&#41;/ge;
  $string =~ s/&#40;&#91;\xE0-\xEF&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;/sprintf &#40;"%c", hex&#40;sprintf&#40;$format,unpack&#40;"c",$1&#41;<<12&0xF000|unpack&#40;"c",$2&#41;<<6&0x0FC0|unpack&#40;"c",$3&#41;&0x003F&#41;&#41;&#41;/ge;
  $string =~ s/&#40;&#91;\xF0-\xF7&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;&#40;&#91;\x80-\xBF&#93;&#41;/sprintf &#40;"%c", hex&#40;sprintf&#40;$format,unpack&#40;"c",$1&#41;<<18&0x1C0000|unpack&#40;"c",$2&#41;<<12&0x3F000|unpack&#40;"c",$3&#41;<<6&0x0FC0|unpack&#40;"c",$4&#41;&0x003F&#41;&#41;&#41;/ge;
  no bytes;

  return $string;
&#125;

sub decodeencodedstring &#123;
  my $stringtodecode = shift;
  $stringtodecode =~ tr/\+/ /s;
  $stringtodecode =~ s/%&#40;&#91;A-F0-9&#93;&#91;A-F0-9&#93;&#41;/pack&#40;"C", hex&#40;$1&#41;&#41;/ieg;
  $stringtodecode =~ s/\\x&#40;&#91;A-F0-9&#93;&#91;A-F0-9&#93;&#41;/pack&#40;"C", hex&#40;$1&#41;&#41;/ieg;
  return $stringtodecode;
&#125;
Achja, in $ref sollte der Referrer drin sein ...

cu, Robo :)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 15:54
von Nullpointer
thx, mal schauen was mehr ausspuckt.

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 16:00
von robo
Nachtrag: Die umbrochenen Zeilen oben natürlich in eine Zeile packen ...

Und nach der Zeile

$result = $param;

in der Funktion getparam kannst du noch ein last; einfügen, bringt noch ein paar millisekunden Performance. :-)

cu, Robo :)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 16:03
von Nullpointer
chlor.

funzt prima und ist auch gut verständlich dein code. kombiniere ich wohl noch mit der engine abfrage aus dem anderen script.....und mache einen counterdienst (löl).

1001 dank

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 16:12
von robo
Das ist nicht alles "mein" Code ... die beiden unteren Funktionen habe ich aus anderen Open-Source-Projekten abgeguckt. Aber wieso sollte man jedes Mal das Rad neu erfinden? ;-)

Natürlich ist die Regex weder vollständig noch optimiert, da könnte man noch was machen, sollte aber glaube ich 99% abdecken.

Und beachte bitte auch den Edit meines letzten Posts bezüglich Performance. :-)

cu, Robo :)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 16:58
von Nullpointer
das script läuft nur in meinem lokal.
performance, copyright und ähnlichen schwachsinn gibt es hier nicht. obwohl ich habe so ein gnu an der wand hängen.

:lol:

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 18:00
von robo
Tststs ... Performance ist kein Schwachsinn! :-)

cu, Robo :)

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 18:26
von Nullpointer
hmm....vielleicht das haar in der suppe?

https://www.blueyonder.co.uk/blueyonder/index.jsp

die haben ihren query string auch im q parameter stehen. aber da bekomme ich nur ein 'a' (kein ping) in die logfile. ist bisher der einzige referrer, der falsch ausgewertet wird.

isch weiß es ist nicht gerade google und einem geschenkten gaul haut man nicht auf's maul, aber ...

gute nacht

Search String aus Referer extrahieren

Verfasst: 28.09.2005, 18:36
von robo
Hmm ... blueyonder hat auch einen Parameter qt im Referrer stehen, und der überschreibt im Script den Inhalt von q, da er später ausgewertet wird. Da kommt auch das a her. qt habe ich mit in der Regex stehen, weil ich das auch schon irgendwo mal als Query-Parameter gesehen habe.

Wenn du das last; einbaust, wie oben beschrieben, kriegst du nicht nur mehr Performance, sondern löst auch dieses Problem. Ob es zu neuen Problemen führt, vermag ich nicht vorauszusehen. ;-)

cu, Robo :)