winelady
Themenersteller
Kauffrau
Content Halbgott (862 Beiträge)

Herkunft von Besuchern

am 07.01.2014, 14:40 Uhr eröffnete winelady folgenden Thread
Sonstige    6573 mal gelesen    19 Antwort(en).

Hallo zusammen,

zur Zeit recherchiere ich, ob und – wenn ja – wie man Besucher aus bestimmten Regionen von manchen Webseitenbereichen ausschließen kann.
Grund dafür sind Kunden von Weinhändlern in Ostasien, die im Onlineshop die deutschen Preise nachsehen und vergleichen, ohne zu berücksichtigen, daß der Händler Fracht + Zölle + Steuern + ggf. weitere landesspezifische Extrakosten aufkalkulieren muß.

Ganz im Groben:
Abfrage: Besucher = frei oder eingeschränkt?
Freier Zugang: Besucher kann alle Seiten vollständig sehen
Eingeschränkter Zugang: Besucher soll bestimmte Seitenbereiche oder bestimmte Informationen auf einzelnen Seiten nicht sehen.

Ich habe bisher folgende Informationsmöglichkeiten gefunden:
1. per php:
– IP-Adresse hilft nur unter Einbindung einer DB-Abfrage, ggf. eines externen Dienstes, da die IP-Bereiche nicht wirklich nach Ländern geordnet zu sein scheinen
– Browser-Sprachabfrage

2. per Javascript
– Zeitzonenabfrage könnte gehen, sofern der Besucher JS nicht deaktiviert hat, was zumindest in D häufig vorkommt und deshalb die hiesigen Besucher erheblich stören könnte.

Vielleicht fällt Euch sonst noch eine Möglichkeit ein?

Danach wäre dann die Frage, wie man die zu verwendende Information sozusagen beim Betreten der Webseite erhebt und so lange beibehält, bis der Besucher die Seite wieder verläßt, damit sie nicht bei jedem weiteren Klick erneut abgefragt werden muß. Ich weiß, daß Shopsysteme mit "Sessions" arbeiten, kenne mich damit aber nicht genauer aus.

Ich freue mich auf Eure Ideen.

Danke + Gruß
winelady



Weinvielfalt aus dem Weingut Fuchs
Fremdsprachensatz

wmm
Neuling (2 Beiträge)
am 07.01.2014, 15:40 Uhr schrieb wmm

Mittels $_SERVER[\'HTTP_ACCEPT_LANGUAGE\']; könntest du versuchen die Sprache des Browsers zu ermitteln. Das Ganze bietet natürlich keine 100%ige Sicherheit, da ein Asiate seine Sprache natürlich auch auf Englisch gestellt haben könnte. Allerdings kannst du so natürlich bestimmten Sprachen den Zugriff verweigern oder diese umleiten.



gelöschter Benutzer
am 07.01.2014, 15:44 Uhr schrieb

Eigentlich stellt die Herkunft des Besuchers schon eine Straftat dar,
den hier gibt es keinen Vertrag der dies dir Erlauben würde.


Diese rückverfolgen der Herkunft ist sehr umstritten,
ich selber sehe es auch als Verstoß gegen den Datenschutz!


joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 07.01.2014, 15:49 Uhr schrieb joerg

Hallo Hildegard

Grundsätzlich würde ich in so einem Fall so vorgehen.

Also erstmal das Skript von Florian wahrscheinlich als Basis weil ich weiss auf welchem hohen Level der codet.

floern.com/webscripting/herkunftsland-des-besuchers-ermitteln



So danach ist es eigentlich relativ einfach. Alle Endungen die du nicht haben willst und die einem Land entsprechen in ein Array packen.
Also wenn zweistellige Endung überprüfen ob es im Array enthalten ist.
Bei anderen Endungen wmüsstest du eine Liste wohl erstmal aufbauen und in der Anfangszeit auch kontrollieren und die dann auch gegen ein Array abprüfen.

Wenn also diese Überprüfung eine Sperre ergibt dann halt eben entweder ein zusätzliches Element oder eine Klasse oder ID setzen und dann per CSS den entsprechenden Bereich nicht mehr anzeigen.

Hilft dir dann auch zwar nicht wenn jemand das dann mit firebug modifiziert.

Alternative Positivliste mehrstellige Endungen. Grundsätzlich sperren ausser die betreffende Domain ist in einem array enthalten.


<?php
$test = function ($host,$domain){
$ip = $_SERVER[\'REMOTE_ADDR\'];
$host = gethostbyaddr($ip);
$domain = array(\'\');
return !in_array($host,$domain);
}
if ($test)
echo \'<script asynch defer id="lock">/*Hier jetzt die Javascript Überprüfung zum entsperren*/</script>\';
?>


Das Javascript würde ich jetzt nach dem body Element setzen in diesem Fall und ich gehe mal von HTML5 und einem verwendeten main Element aus.

[css]#lock ~ main .areas_to_control{display:none;}[/css]

So danach kannst du sicherheitshalber noch deine Javascript Überprüfung noch machen für die Fälle wo Javascript jetzt wieder es zulassen würde entfernst du das id Attribut oder setzt es auf einen anderen Wert.

Wenn man es auf einen anderen Wert setzen würde könnte man dann auch sowas anstellen.

[css]#lock-js ~ main .areas_to_control:after{content:\'Unsere Preise gelten nicht unbedingt in diesem Falle\':}[/css]

Sollte reichen jetzt wohl um deine Gedanken etwas anzuregen.

Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 07.01.2014, 15:56 Uhr schrieb joerg

MinatoSenu schrieb:

Eigentlich stellt die Herkunft des Besuchers schon eine Straftat dar,
den hier gibt es keinen Vertrag der dies dir Erlauben würde.


Diese rückverfolgen der Herkunft ist sehr umstritten,
ich selber sehe es auch als Verstoß gegen den Datenschutz!



Hallo

Grundsätzlich möchte ich jetzt wissen warum meine Herkunft eine Straftat sein soll! Und welche Bestrafung siehst du für diese Straftat dann vor?

Du verfolgst in dem Falle doch gar nichts. Das ist eine reine Überprüfung mit einigen Mitteln ob bestimmte Anzeigen erfolgen sollen.
Diese Informationen werden weder gespeichert noch an jemand weitergegeben.

Ich liebe solche unsinnigen Kommentare.

Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

klaus_b
Avatar klaus_b
Er ernährt mich ;-)
Content Meister (328 Beiträge)
am 07.01.2014, 15:59 Uhr schrieb klaus_b

Hallo,

winelady schrieb:

– IP-Adresse hilft nur unter Einbindung einer DB-Abfrage, ggf. eines externen Dienstes, da die IP-Bereiche nicht wirklich nach Ländern geordnet zu sein scheinen


Die GEO-Bestimmung nach IP-Adresse ist sogar die einzig einigermaßen sicher Methode um das Herkunftsland zu bestimmen. Lediglich wenn anonyme Proxies oder Satelliten-Provider verwendet werden, hast du ein echtes Problem.

MaxMind bietet mit der Reihe GeoLite freie Datenbanken zur lokalen Verwendung an. Sie funktionieren sehr gut und werden monatlich (immer am ersten Dienstag im Monat) aktualisiert. Du kannst die Daten als CSV (Komma getrennt) herunterladen und in dein DBMS importieren.
Ich verwende genau diese Daten in einem eigenen Projekt und bin sehr zufrieden damit. Ich habe die Aktualisierung automatisiert, so dass ich mich darum nicht mehr kümmern muss.

Eine kleine Anmerkung noch: Die IP-Adressen werden in der Datenbank nicht in der üblichen Notation 127.0.0.1 gespeichert, sondern als 64-Bit Integer (long). Du musst die jeweilige IP-Adresse also vor der Abfrage in eine 64-Bit Ganzzahl konvertieren. PHP hat da bestimmt was zu bieten.

Servus,
Klaus


klaus_b@.NET über alles was an .NET und C# Spass macht.

winelady
Kauffrau
Content Halbgott (862 Beiträge)
am 07.01.2014, 16:18 Uhr schrieb winelady

Hallo zusammen

und erst mal vielen Dank für Eure Ideen.

@wmm: die Browserspracheinstellung hatte ich bereits erwähnt; ich denke, sie ist wegen en zu unsicher.

MinatoSenu schrieb:

Eigentlich stellt die Herkunft des Besuchers schon eine Straftat dar, den hier gibt es keinen Vertrag der dies dir Erlauben würde.


@MinatoSenu: auf welcher Rechtsgrundlage siehst Du eine Straftat, wenn ich über die Spracheinstellung oder über eine IP-Nummerngruppe, die beide nicht gespeichert werden, eine Umleitung einbaue oder Informationen auslasse?!

@Jörg: danke für den Link; Florians Script hatte ich bei meinen bisherigen Recherchen nicht gefunden. Problem dürfte dabei sein, daß ich keinen Plan habe, wie die gängigen ostasiatischen Hoster heißen, die auf .com enden. Im Prinzip brauche ich nur eine Negativliste, alle anderen haben freien Zugang.

@Klaus: danke, über diese DB bin ich heute auch schon gestolpert und habe mir von GeoLite die Länderliste angeschaut. Allein CN und HK sind über 3000 IP-Gruppen. Hat jemand eine Ahnung, wieviel Verzögerung solch eine DB-Abfrage verursachen würde? Die IPs liegen in der gängigen Form vor.

Gruß
winelady



Weinvielfalt aus dem Weingut Fuchs
Fremdsprachensatz

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 07.01.2014, 16:37 Uhr schrieb joerg

Hallo Hildegard

Die Abfrage sollte nicht besonders viel Raum einnehmen wenn du so vorgehst.

Select 1 from negativlise where ip=$ipv6;
Du prüfst ja nur ob diese Adresse vorhanden ist.

Ich wüsste jetzt aber auch nicht aus dem Kopf wie von Klaus erwähnt ich eine IP Adresse in eine IPv6 Adresse umwandeln würde da nicht jeder host eine besitzt.

Ich weiss wie ich es mit PHP feststellen kann ob für eine Domain eine ipv6 Adresse existiert. joerghuelsermann.de/artikel/dns.php



Den Code kann ich dir per Mail schicken wenn du ihn dir anschauen möchtest

Mal eine dumme Frage zwischendurch was machst du wenn die über einen Proxyy Server gehen? Sofern ich letztens festgestellt habe flippen die teilweise zumindest im Firefox aus da ich XHTML wirklich ausgebe.

Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

SGS
Ingenieur
Guru (223 Beiträge)
am 07.01.2014, 19:02 Uhr schrieb SGS

Hallo,

das länderspezifische "Ausgrenzen" ist sicherlich nicht strafbar, da es von vielen international tätigen Verkaufsseiten so gemacht wird. Hier geht es insbesondere um Angebote, die nur in bestimmten Ländern zulässig sind.

Bespiel sind Wertpapiere, die z.B. in den USA so nicht angeboten werden dürfen oder Medikamente, welche in manchen Ländern rezeptpflichtig, in anderen Ländern rezeptfrei sind.

Ich habe auch Lösungen gesehen, die zur Sicherheit z.B. bei nicht-deutschen Anfordern nochmals eine Abfrage einführen.

Gruß

SGS


http://www.cdl-rlp.de

winelady
Kauffrau
Content Halbgott (862 Beiträge)
am 07.01.2014, 19:43 Uhr schrieb winelady

Hallo zusammen,

danke Euch nochmal für alle Hinweise.

Nachdem ich probehalber die Geo-ID-Tabelle installiert habe, wird sie wohl die beste Lösung bieten. Trotz >80.000 Einträgen geht die Abfrage sehr schnell, zumal ich die "normalen" IP-Nummern und die ausgeschriebene Länderbezeichnung nicht brauche und daher weglassen kann.

Jetzt werde ich mich mit den Sessions beschäftigen…

Gruß
winelady


Weinvielfalt aus dem Weingut Fuchs
Fremdsprachensatz

klaus_b
Avatar klaus_b
Er ernährt mich ;-)
Content Meister (328 Beiträge)
am 08.01.2014, 07:36 Uhr schrieb klaus_b

Guten Morgen zusammen,

@Jörg
Niemand spricht von einer IPv6, sondern nur von einem 64-Bit Integer.
Ich habe das deshalb erwähnt, weil die meisten bei IP-Adressen nur an die Schreibweise der 4 Oktette (127.0.0.1) denken.
Normalerweise ist eine IPv4 Adresse ein uint (32-Bit Integer ohne Vorzeichen). MaxMind speichert die IP-Adressen als bigint in der Datenbank. Daher der cast zum 64-Bit Integer.

@Hildegard
Ich lade die 80k Einträge der Liste in den RAM und suche in der Auflistung mit einer binären Suche. Das ist ein O(log n) Vorgang. Der benötigt bei 80k Einträgen im ungünstigsten Fall nur 15 Schritte. Bei mit ist das in 2-4 ms erledigt. Also absolut zu vernachlässigen.

Servus,
Klaus


klaus_b@.NET über alles was an .NET und C# Spass macht.



« zurück zu: Sonstige

Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.