如何使用客户端代码阻止一个国家/地区访问网站
Posted
技术标签:
【中文标题】如何使用客户端代码阻止一个国家/地区访问网站【英文标题】:How to block a country from visiting a website using client side code 【发布时间】:2013-01-14 19:05:48 【问题描述】:我已经用谷歌搜索了很长时间以达到我的目标,但徒劳无功。
我有一个博客,我为其购买了一个自定义域。
不幸的是,据我所知,我认为博主不支持 php 或 .htaccess
或类似的东西。
我认为它只支持基本的东西,如html
、css
、javascript
、jquery
、ajax
.....我猜服务器端的任何事情都是不可能的(即:php)。
我想阻止特定国家/地区访问我的网站。有没有办法使用简单的客户端代码来做到这一点?
【问题讨论】:
无法保证您能够分辨出某人来自哪个国家/地区。即使你可以,他们也可以禁用 JS 来解决这个问题。 请注意,无论如何,您将无法真正阻止没有服务器访问权限的人:浏览器可以轻松禁用 Javascript,因此任何真正想要看到你的网站完全可以看到它。 您打算如何确定哪个国家/地区正在访问您的网站?传入请求的 IP 地址被广泛使用,但它需要第三方服务。浏览器区域设置不精确,因为它们不是强制执行的,而且人们将他们的区域设置设置为与他们的实际位置不同的东西是很常见的(例如,“我住在墨西哥,但我正在浏览美国英语。”) @Matchu 是否有任何脚本可以阻止国家/地区?我同意一些专家使用其他技巧设法进入我的网站。谢谢 我打算建议添加一个元刷新标签,然后用 javascript 禁用它,但这不起作用。 【参考方案1】:您可以使用访问者的 IP 地址并对其进行地理位置搜索。
将此问题发送给Get Client IP using just Javascript?,然后您可以将其传递给freegeoip 等服务以获取信息。
从他们的主页:
http://freegeoip.net/json/google.com?callback=show
结果:
show("city": "Mountain View", "region_code": "CA", "region_name": "California", "metrocode": "807", "zipcode": "94043", "longitude": "-122.057", "country_name": "United States", "country_code": "US", "ip": "209.85.145.147", "latitude": "37.4192");
当然你可以将google.com
替换为访问者的IP。
【讨论】:
现在好像重定向到freegeoip.net/shutdown。【参考方案2】:有一些第三方 API 可以帮助您检测国家/地区。您可以使用以下代码来检测国家/地区
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data)
alert('Latitude: ' + data.latitude +
'\n Longitude: ' + data.longitude +
'\n Country: ' + data.address.country);
);
但确实人们可以禁用 javascript 以进入您的网站。你应该从服务器阻止它。
【讨论】:
【参考方案3】:使用找到的线程Simplest way to detect client locale in PHP 来检测国家。然后停止处理页面,根据国家/地区重定向或阻止等。或基于您的服务器语言的类似内容。
【讨论】:
问题是在不使用服务器端技术的情况下提问。 很遗憾,我无法控制任何服务器设置。但感谢您的努力。 低头看帖子。它通过 api 来实现。通过 javascript 执行此操作,然后通过 window.location 重定向。在这里,ajax 并使用结果:api.hostip.info/get_html.php?ip=12.215.42.19 @Leeish 我可以建议您将链接指向您所引用的具体答案,而不是一般问题。 请原谅我的无知,但我了解如何通过 URL 使用链接,但是如何获取/生成指向线程中适当位置的链接?以上是关于如何使用客户端代码阻止一个国家/地区访问网站的主要内容,如果未能解决你的问题,请参考以下文章
使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区