注册 登录
编程论坛 ASP技术论坛

asp 如何禁止国内的IP访问我的网站 我的网站是英文的

guang2356447 发布于 2010-12-28 20:27, 4374 次点击
asp 如何禁止国内的IP访问我的网站   
我的网站是英文的 不想让国内的访问  有什么好办法
24 回复
#2
lele20072010-12-28 21:27
程序代码:
<%
Function leleToStr(str)

 
Dim stream

 
Set stream=Server.CreateObject("ADODB.Stream")

 
With stream
   .Type
=1
   .Mode
=3
   .Open
   .Write str
   .Position
= 0
   .Type
= 2
   .Charset
= "gb2312"
   leleToStr
= .ReadText
   .Close

 
End With

 
Set stream=Nothing
End Function


'获取IP所在地区
Function getIPAddress()
on error resume next

 
dim xmlhttp,url

 url
= "http://ip."

 
set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")

 xmlhttp.open
"get",url,false

 xmlhttp.send


 
'开始截取字符      
dim StartStr,EndStr,html

 html
= leleToStr(xmlhttp.responseBody)

 StartStr
= Instr(html,"所在地为:")      

 EndStr
= Instr(html,"如果该IP")      

 html
= mid(html,StartStr,EndStr-StartStr)


 
'再次获取
StartStr = Instr(html,"<span>")

 StartStr
= StartStr + 6

 EndStr
= Instr(html,"</span>")

 html
= mid(html,StartStr,EndStr-StartStr)


 getIPAddress
= html

 
if err then err.clear:html = ""

 
set xmlhttp = nothing
End Function

if Instr(getIPAddress(),"中国")>0 then response.end
%>

用程序的方法获取IP查是否含中国(国内)试一下。。
会影响网站打开速度。。。
http://ip.

#3
lele20072010-12-28 21:30
要是真用这个方法限制。。可以尝试判断是中国后,保存是否的值在一个变量里通过保存为Cookies或session里。。最好cookie。设置有效时间,再直接判断cookie...session来限制。。只有第一次打开才会到http://ip.检测。。这样做应该不影响以后的打开速度了。
#4
vbc2010-12-29 16:34
看看又不会吃亏!
#5
eournet2011-01-05 11:48
我建议你移民到火星去
#6
kangli_kl2011-01-10 09:57
楼主这个想法比较奇怪,建议楼主不要让地球上的互联网用户访问你的网站。。。
#7
lele20072011-01-10 10:33
呃,看来要楼主自己来才能解释这个需求之意了。。

呵呵。
刚开始,我也感觉好奇怪。不过,后来,做外贸的客户经常有提起这个问题,问他们也没有说明原因,大多数只是说老板的要求。有部份表示为了防止同行朋友的攻击。。还有一些程序上的朋友也讨论怎么实现这个功能。在想:我不需要这个功能,这。。。不代表别人不需要。。
我认为,客户既然找程序员做网站,这样一般是不太懂网站相关更不会懂程序。网站建设好以后。。发布文章。。有些企业网站管理员。直接复制同行朋友网站上的文章,文章包含的图片呢?直接在编辑器里发布调用。。同行朋友调用了自己网站的图片。。占用了iis连接数。。。调用得多了,可能会影响网站性能。。

.......
#8
guang23564472011-01-10 12:18
楼上说的好啊呵呵

客户就是不想让同行看到   他用的是国内同行的图片   

有什么好办法没
#9
lele20072011-01-10 13:45
你可以试一下二楼发的那个代码应该是可以实现的。。借腾讯的IP分享返回国籍判断中国。。首次访问才需要检测,其实网站速度影响不大。。
http://www.
之前也有朋友问过我。。要不你参考一下这篇文章。。

[ 本帖最后由 lele2007 于 2011-1-10 13:46 编辑 ]
#10
hams2011-01-10 14:28
关键的问题是,如何判断是国内用户还是国外用户,就目前看来,唯一可行的就是IP,知道了这点,其实实现起来并不难。
#11
lele20072011-01-10 15:33
回复 10楼 hams
dim xmlhttp,url
 url
= "http://ip."
 
set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
 xmlhttp.open
"get",url,false
 xmlhttp.send

呃。版主。我测试了一下。。这个用远程访问得到的是服务器的所在地区。。
。。。这段代码实现不了了。。再想想其它办法。。
#12
guang23564472011-01-11 17:17
楼上你给个方法啊
#13
cnfarer2011-01-11 20:47
当浏览器访问网页时,服务器是可以得到浏览器IP的。只要一个IP地址库就可以了吧?!
#14
gupiao1752011-01-11 22:45
先获取客户端IP,然后跨站到大站点查IP,看是否为国内的IP,如是就禁止访问,由于IP数据更新比较大,自己的本地库无法达到及时性准确性,经常会错判,当然如果你肯花钱每天更新的话,那就无所未了。
#15
lele20072011-01-12 11:23
以下是引用gupiao175在2011-1-11 22:45:26的发言:

先获取客户端IP,然后跨站到大站点查IP,看是否为国内的IP,如是就禁止访问,由于IP数据更新比较大,自己的本地库无法达到及时性准确性,经常会错判,当然如果你肯花钱每天更新的话,那就无所未了。
获取客户端IP会了。。就是跨站到大站点比如:ip.时要怎样实现啊?
ip.的是post查询的。没有地垃栏传参数接口。。传不过去客户端的IP了。。导致都是获取到服务器的IP。
#16
kangli_kl2011-01-12 16:37
根据ip判断也解决不了根本问题,如果地方的服务器挂国外的代理的话,照样可以做想做的事
#17
gupiao1752011-01-12 16:41
以下是引用lele2007在2011-1-12 11:23:25的发言:

获取客户端IP会了。。就是跨站到大站点比如:ip.时要怎样实现啊?
ip.的是post查询的。没有地垃栏传参数接口。。传不过去客户端的IP了。。导致都是获取到服务器的IP。
ip.的查询表单如下:
       <form name="searchip" action="/cgi-bin/searchip" method="post" onsubmit="return OnSearchIpSubmit();">

         <div class="im_top"><span>请输入IP:</span>

          <input   name="searchip1" id="searchip1" onkeyup="if(event.keyCode==13){return OnSearchIpSubmit();}" type="text" />

          <button onclick="javascript:OnSearchIpSubmit();">查询</button>

          <p>每天都会有新的IP被使用,我们的IP库可能会没有记录你所需要查找的IP。</p>

        </div></form>
在本地用AJAX的POST方法模拟一下可否,当然查询IP的不只QQ,还有其他站点查IP的,有的是GET方式,模拟起来也简单些!甚至不要通过后台直接在JS脚本里即可操作!推荐用JQ框架!
#18
vbc2011-01-13 16:43
不是有分配给中国的IP段吗,要是要用代理去哪查也是没用,看下在不在中国的IP段范围内就行了吧。
#19
wangjy5002011-01-13 21:07
ip.可以传参查询,POST
#20
lele20072011-01-14 12:06
以下是引用wangjy500在2011-1-13 21:07:16的发言:

ip.可以传参查询,POST
'请问是怎么传的啊?教教我啊,谢谢。。
#21
wangjy5002011-01-14 18:50
程序代码:
<%
Function leleToStr(str)
Dim stream
Set stream=Server.CreateObject("ADODB.Stream")
With stream
   .Type
=1
   .Mode
=3
   .Open
   .Write str
   .Position
= 0
   .Type
= 2
   .Charset
= "gb2312"
   leleToStr
= .ReadText
   .Close
End With
Set stream=Nothing
End Function


'获取IP所在地区
Function getIPAddress(ip)
on error resume next
dim xmlhttp,url,PostData
PostData
="searchip1="&ip
url
= "http://ip."
set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.open
"post",url,false
xmlhttp.send(PostData)

'开始截取字符      
dim StartStr,EndStr,html
html
= leleToStr(xmlhttp.responseBody)
StartStr
= Instr(html,"所在地为:")      
EndStr
= Instr(html,"如果该IP")      
html
= mid(html,StartStr,EndStr-StartStr)

'再次获取
StartStr = Instr(html,"<span>")
StartStr
= StartStr + 6
EndStr
= Instr(html,"</span>")
html
= mid(html,StartStr,EndStr-StartStr)

getIPAddress
= html
if err then err.clear:html = ""
set xmlhttp = nothing
End Function
Response.Write(getIPAddress(
"114.95.39.80"))
response.end
%>
#22
lele20072011-01-15 15:11
以下是引用guang2356447在2011-1-11 17:17:03的发言:

楼上你给个方法啊
程序代码:
<%
Function leleToStr(str)
Dim stream
Set stream=Server.CreateObject("ADODB.Stream")
With stream
   .Type
=1
   .Mode
=3
   .Open
   .Write str
   .Position
= 0
   .Type
= 2
   .Charset
= "gb2312"
   leleToStr
= .ReadText
   .Close
End With
Set stream=Nothing
End Function


'获取IP所在地区
Function getIPAddress(ip)

 
on error resume next

 
dim xmlhttp,url,PostData

 PostData
="searchip1="&ip

 url
= "http://ip."

 
set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")

 xmlhttp.open
"post",url,false

 xmlhttp.send(PostData)


 
'开始截取字符     
dim StartStr,EndStr,html

 html
= leleToStr(xmlhttp.responseBody)

 StartStr
= Instr(html,"所在地为:")     

 EndStr
= Instr(html,"如果该IP")     

 html
= mid(html,StartStr,EndStr-StartStr)


 
'再次获取
StartStr = Instr(html,"<span>")

 StartStr
= StartStr + 6

 EndStr
= Instr(html,"</span>")

 html
= mid(html,StartStr,EndStr-StartStr)


 getIPAddress
= html

 
if err then err.clear:html = ""

 
set xmlhttp = nothing
End Function

dim ip:ip = request.ServerVariables("REMOTE_ADDR")
if request.Cookies("ip") = "" then
  response.Cookies(
"ip") = getIPAddress(ip)
  response.Cookies(
"ip").Expires = now() + 365 '设置有效期,下次打开Cookie不会失效
else
  
if Instr(request.Cookies("ip"),"中国")>0 then response.write "本站暂时禁止国内访问,谢谢光临!":response.end
end if
%>
这次应该可以了。呵呵。
#23
mdjpp2011-01-17 10:56
为什么不让国人自己看
#24
phpwokao2012-03-23 08:31
不知道php实现这个功能效果如何,我自己花了一年的多时间开发了一个php屏蔽国内ip的系统, 大家可以给点意见我,谢谢!名字是http://www.
#25
a976655202012-03-26 14:16
这样也可以用来实现只允许地区登陆
1