[PHP] Ban landen van site

Pagina: 1
Acties:
  • 154 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste,

Ik zit met een dilemma :) Wat ik wil is dat ik volledige landen wil bannen van mijn site. Bijvoorbeeld *.nl e.d.
Mijn vraag is nu, hoe is dit te doen? Ik had zelf een scriptje geschreven, dat het IP adres omgezet werd naar een hostname, en met behulp van explode de hostname word opgesplitst. Dit werkte allemaal wel goed, maar het is mij niet gelukt om aan te geven welke TLD daar nu bij hoort. Niet iedereen heeft bijvoorbeeld test.xs4all.nl.

Daarom is het niet mogelijk om te zeggen dat het altijd het derde stuk is van de hostname.

Kan iemand mij helpen om dit toch op een een of andere manier voor elkaar te krijgen?

Bij voorbaad dank,

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Dit is onmogelijk, er zijn honderd duizenden open proxies.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Met een regex?

PHP:
1
preg_match('/.+\.{2,3}$/', $hostname, $matches);


Zo uit mn hoofd hoor, geen idee of ie ook daadwerkelijk werk :X

[ Voor 13% gewijzigd door Osiris op 04-06-2006 12:24 ]


Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

De beste manier is een whois uitvoeren op elk ip, maar dat wil je eigenlijk niet continue doen.
Uitvoer is dan bijvoorbeeld:
% This is the RIPE Whois query server #1.
% The objects are in RPSL format.
%
% Note: the default output of the RIPE Whois server
% is changed. Your tools may need to be adjusted. See
% http://www.ripe.net/db/news/abuse-proposal-20050331.html
% for more details.
%
% Rights restricted by copyright.
% See http://www.ripe.net/db/copyright.html

% Note: This output has been filtered.
% To receive output for a database update, use the "-B" flag.

% Information related to '213.239.154.0 - 213.239.154.127'

inetnum: 213.239.154.0 - 213.239.154.127
netname: NL-TWEAKERS
descr: Tweakers.net
descr: Please use abuse@tweakers.net for complaints.
country: NL
admin-c: TSAR1-RIPE
tech-c: TSTR1-RIPE
status: ASSIGNED PA
mnt-by: TRUESERVER-MNT
source: RIPE # Filtered

role: Administrative role account
address: Trueserver B.V.
address: Cooperatiehof 16A
address: 1073 JR Amsterdam
phone: +31 20 3059750
fax-no: +31 20 3059751
e-mail: ripe-admin@trueserver.nl
admin-c: TSPR1-RIPE
admin-c: TSSJ1-RIPE
tech-c: TSTR1-RIPE
nic-hdl: TSAR1-RIPE
mnt-by: TRUESERVER-MNT
source: RIPE # Filtered

role: Technical role account
address: Trueserver B.V.
address: Cooperatiehof 16A
address: 1073 JR Amsterdam
phone: +31 20 3059750
fax-no: +31 20 3059751
e-mail: ripe-tech@trueserver.nl
admin-c: TSPR1-RIPE
admin-c: TSSJ1-RIPE
tech-c: TSVD1-RIPE
tech-c: JG1961-RIPE
tech-c: TSLL1-RIPE
tech-c: DWS-RIPE
nic-hdl: TSTR1-RIPE
mnt-by: TRUESERVER-MNT
source: RIPE # Filtered

% Information related to '213.239.152.0/21AS15703'

route: 213.239.152.0/21
descr: TrueServer BV
origin: AS15703
mnt-by: TRUESERVER-MNT
source: RIPE # Filtered

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Je kunt het wel aardig doen denk ik....

Ik zou dan zo'n ip database downloaden en dan de landen uitfilteren die je niet op je site wilt hebben. En ook zou ik dan gewoon de meest bekende proxies blokeren...

Dat is het toch voor de gewone computer-aar bijna onmogelijk... toch ?

Portfolio


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Kijk eens naar de source van de PHP.net website, en dan specifiek naar de bestanden ip-to-country.inc en countries.inc. Ik denk dat je daarmee wel een eind moet kunnen komen. :)

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
moto-moi schreef op zondag 04 juni 2006 @ 12:24:
De beste manier is een whois uitvoeren op elk ip, maar dat wil je eigenlijk niet continue doen.
Uitvoer is dan bijvoorbeeld:

[...]
Kun je dan niet beter gewoon zo'n IP Index in een soort DB zetten ofzo? Daar staat ook land-informatie bij.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op zondag 04 juni 2006 @ 12:21:
Ik had zelf een scriptje geschreven, dat het IP adres omgezet werd naar een hostname, en met behulp van explode de hostname word opgesplitst. Dit werkte allemaal wel goed, maar het is mij niet gelukt om aan te geven welke TLD daar nu bij hoort. Niet iedereen heeft bijvoorbeeld test.xs4all.nl.

Daarom is het niet mogelijk om te zeggen dat het altijd het derde stuk is van de hostname.

Kan iemand mij helpen om dit toch op een een of andere manier voor elkaar te krijgen?
Je vraagt je dus af hoe je uit een hostname steeds de landcode krijgt. Hoewel je niet weet achter welke punt hij staat, weet je wel dat hij altijd achteraan zal staan. Draai je de array om, dan staat hij dus als eerste. En de eerste kun je altijd wel makkelijk aanspreken. Maar de mogelijkheden die hierboven werden geopperd lijken me veel beter.

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Bij de oplossing van GlowMouse moet er trouwens een hostname aan het IP geknoopt zijn, anders heb je alleen maar een nummertje waar je niks aan hebt. Verder ben je dan verplicht een getHostByAddr() te doen, en dat kan nogal eens traag gaan (dat geld trouwens ook voor de door moto-moi aangedragen whois oplossing). Het IP weet je al, dat staat immers in $_SERVER['REMOTE_ADDR']. Dan hoef je alleen maar te kijken uit welk land dat IP komt, en dan ben je klaar.

[ Voor 12% gewijzigd door AtleX op 04-06-2006 12:40 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Osiris schreef op zondag 04 juni 2006 @ 12:27:
Kun je dan niet beter gewoon zo'n IP Index in een soort DB zetten ofzo? Daar staat ook land-informatie bij.
Zoek jij daar eens 213.239.154.X in op ? :)
Ik kom uit op een Engels ip,en ik weet 100% zeker dat die servers in Amsterdam staan ;)

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

@moto-moi: maar de ip-to-country.com database doet het wel goed. ;)

[ Voor 32% gewijzigd door AtleX op 04-06-2006 12:44 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Deutsche Telekom komt ook altijd in Duitsland uit, ook als je in .nl een internet vrebinding via hun hebt.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

AtleX schreef op zondag 04 juni 2006 @ 12:38:
Het IP weet je al, dat staat immers in $_SERVER['REMOTE_ADDR'].
Ja, behalve als de browser van je bezoeker dat adres niet uitstuurt, of als het gespooft wordt, of als hij een proxy gebruikt, of...

Naast REMOTE_ADDR kan het lonen ook te kijken naar HTTP_X_FORWARDED_FOR en HTTP_VIA. En dan is het nog steeds niet waterdicht. :)
AtleX schreef op zondag 04 juni 2006 @ 12:44:
@moto-moi: maar de ip-to-country.com database doet het wel goed. ;)
Die doen misschien wel andere IP's verkeerd. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb even allen reacties doorgelezen, dank daarvoor!

Het is blijkbaar erg moeilijk om dat te controleren. Ik ga even puzzelen met de opgegeven oplossingen en kijken of het lukt!

Nogmaals bedankt! _/-\o_

Acties:
  • 0 Henk 'm!

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 00:16
Ben eigenlijk wel benieuwd waarom iets dergelijks nodig is.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Nu online
Een controle op hostname lijkt mij in de meeste gevallen wel afdoende, maar in sommige gevallen niet: mijn hostname is home.skewl.net (en ik heb een dsl-lijn via TweakDSL). Ik kan dus niet op jouw website komen als je alleen *.nl toelaat.

Acties:
  • 0 Henk 'm!

  • writser
  • Registratie: Mei 2000
  • Laatst online: 09:53
Wat probeer je te bereiken? Een beetje internetter kan met een proxy alsnog op je site komen. Als ie al niet in google's cache is te vinden.

Onvoorstelbaar!


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Sterker nog, het 'bannen' van landen op grond van een tld is de reinste vorm van discriminatie en wordt o.a. door rfc1855 afgekeurd. Mocht je het willen gebruiken voor automatische taaldetectie is het een ander verhaal, al hoewel daar speciale headers voor zijn.

[ Voor 7% gewijzigd door LauPro op 05-06-2006 00:00 ]

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!

Pagina: 1