私は、ターゲット オーディエンスが米国、オーストラリア、およびオセアニアのみであるフォーラムを主催しています。上記の 3 つを除く他のすべての国から私のフォーラムへのアクセスを禁止する方法を知りたいです。ボットのサインアップに問題がありましたが、ボットはすべて他の国の IP から来ているため、これで問題が解決し、ターゲット ユーザーを悩ませることはないと思います。
これを行う簡単な方法はありますか?アドバイスをいただければ幸いです。
私は、ターゲット オーディエンスが米国、オーストラリア、およびオセアニアのみであるフォーラムを主催しています。上記の 3 つを除く他のすべての国から私のフォーラムへのアクセスを禁止する方法を知りたいです。ボットのサインアップに問題がありましたが、ボットはすべて他の国の IP から来ているため、これで問題が解決し、ターゲット ユーザーを悩ませることはないと思います。
これを行う簡単な方法はありますか?アドバイスをいただければ幸いです。
ボットは世界中のプロキシ サーバーを使用しています。ボットを実行している人は、IP ブロッキングを回避する方法を知っています。
ボットがシステムにサインアップするのを防ぐために GeoIP を使用しても、本質的な問題は解決されません。
Captcha はある程度は役に立ちますが、実際には (適切にプログラムされたボットが Captcha の課題を解決できるという意味で) 数年前から機能していません。
StackOverflow モデルは実際には非常に優れています...新しいユーザーが評判を少しでも得るまでは、あまり多くのことをさせてはいけません (たとえば、他のユーザーから支持を得たものを投稿したり、最初のいくつかの投稿でモデレーターの承認を受ける必要があります)。 .
この PHP コードを使用すると、選択した国がサイトを表示できるようになります。他のすべてのユーザーには、サイトにアクセスできないというメッセージが表示された空白のページが表示されます。
XY は、サイトの表示を許可する国のコードを追加することで、任意の数の国を設定でき&& $country != "XY"
ます。
以下の例では、韓国と米国はサイトを表示できますが、他の国は表示しません。少し変更すると、必要に応じて選択した IP をブロックまたは許可することもできます
$userIP = get_ipxx(false);
$country = file_get_contents('http://api.hostip.info/country.php?ip=' . $userIP);
if ($country != "KR" && $country != "US") {
die ('ERROR : SITE IS UNAVAILABLE');
}
function get_ipxx($ip2long = true) {
if($_SERVER['HTTP_CLIENT_IP']) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}else if($_SERVER['HTTP_X_FORWARDED_FOR']) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
if($ip2long) {
$ip = ip2long($ip);
}
return $ip;
}
MaxMind のGeoLite City無料データベースは、簡単にダウンロード、更新、処理して IP アドレスをローカライズできます。
最も簡単な、しかし力ずくの方法は、国ごとの IP のリストを取得することです (通常、IP は国ごとに大まかに割り当てられます。 http://www.countryipblocks.net/ )。これにより、正当な顧客であるユーザーを誤ってブロックし、正当でないユーザーがサイトにアクセスできるようになる可能性がありますが、ケースの 95 ~ 99% を処理する必要があります。次に、ファイアウォールやウェブサーバー、またはそれらの IP のいずれかをブロックするために選択した技術をセットアップするだけです.