动态程序防采集的新方法

昨天在网上看到一个防采集软件,说采集只访问当前网页,不会访问网页的图片、JS等,今天突然想到,通过动态程序和Js访问分别记录访问者的IP,然后进行IP判断,由于采集过程不会访问JS,采集的时候只会查到用动态程序记录的IP,而不会有通过JS记录的IP,从而实现网页程序的防采集。

防采集的原理非常简单,首先放一段动态语句,把访问者的IP加入到数据库的一个表里,然后在页面底部加入一个JS,JS直接访问动态页面,将访问者的IP加入到数据库的另外一个表里。再次访问的时候,从两个表里读IP数据,然后判断时间差,如果只在第一个表里找到,在第二个表里找不到,或者时间差超过10秒,则认为是采集。

优点

1.部署简单,只要是动态语言就能很容易的实现,无需借助服务器端程序

2.杀伤力大,几乎能封杀所有的采集过程

缺点

1.第一个缺点还是杀伤力大,如果需要实际使用需要考虑一些特殊情况,以免误杀已经杀掉搜索爬虫

2.只适用于动态网页,静态页面就没法用了

流程写的比较乱,不过原理本身就不是很复杂,下面附上程序例子,懂ASP的应该很快就能看懂。

本文由方卡在线(http://www.fangka.net/)原创,转载请注明出处。如有雷同,纯属巧合!

程序例子(ASP+ACCESS)(测试程序下载):

1.建立数据库

表1:Ip1,字段Ip1_Adderss(文本),Ip1_Time(日期/时间,默认值=Now())

表2:Ip2,字段Ip2_Adderss(文本),Ip2_Time(日期/时间,默认值=Now())

2.Index.asp(仅动态代码,全部代码请见测试程序中)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Dim Conn,Rs,Sqlstr,Ip,IpTime,IpTime2,NewUser
NewUser=0
Set Conn = Server.CreateObject("Adodb.Connection")
Set Rs=Server.Createobject("Adodb.RecordSet")
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Data.mdb")
Conn.Open ConnStr
Ip=Request.ServerVariables("REMOTE_ADDR")
Sqlstr="Select * From [Ip1] Where Ip1_Address='"&Ip&"' Order By Ip1_Id Desc"
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Then
NewUser=1
Application.Lock()
Rs.AddNew()
Rs("Ip1_Address")=Ip
Rs.Update()
Application.UnLock()
Else
IpTime=Rs("Ip1_Time")
Application.Lock()
Rs.AddNew()
Rs("Ip1_Address")=Ip
Rs.Update()
Application.UnLock()
End If
Rs.Close
If NewUser=0 Then
Sqlstr="Select * From [Ip2] Where Ip2_Address='"&Ip&"' Order By Ip2_Id Desc"
Rs.Open Sqlstr,Conn,1,3
If Rs.Eof Then
Rs.Close
Response.Write("请勿采集!")
Response.End()
Else
IpTime2=Rs("Ip2_Time")
If DateDiff("s",IpTime2,IpTime)>10 Then
Rs.Close
Response.Write("请勿采集!")
Response.End()
End If
End If
Rs.Close
End If
%>
 

3.Js.asp

<%
Dim Conn,Rs,Sqlstr,Ip
Set Conn = Server.CreateObject("Adodb.Connection")
Set Rs=Server.Createobject("Adodb.RecordSet")
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Data.mdb")
Conn.Open ConnStr
Ip=Request.ServerVariables("REMOTE_ADDR")
Sqlstr="Select * From [Ip2]"
Rs.Open Sqlstr,Conn,1,3
Application.Lock()
Rs.AddNew()
Rs("Ip2_Address")=Ip
Rs.Update()
Application.UnLock()
Rs.Close
%>

4.Get.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Response.Write(Server.HTMLEncode(GetHttpPage("http://localhost/Index.asp","GB2312")))
'==============================
'函 数 名:GetHttpPage
'作 用:获取页面源代码函数
'参 数:网址HttpUrl
'==============================
Function GetHttpPage(HttpUrl,Code)
If IsNull(HttpUrl)=True Or HttpUrl="" Then
GetHttpPage="A站点维护中!"
Exit Function
End If
On Error Resume Next
Dim Http
Set Http=server.createobject("MSX"&"ML2.XML"&"HTTP")
Http.open "GET",HttpUrl,False
Http.Send()
If Http.Readystate<>4 then
Set Http=Nothing
GetHttpPage="B站点维护中!"
Exit function
End if
GetHttpPage=BytesToBSTR(Http.responseBody,Code)
Set Http=Nothing
If Err.number<>0 then
Err.Clear
GetHttpPage="C站点维护中!"
Exit function
End If
End Function
'==============================
'函 数 名:BytesToBstr
'作 用:转换编码函数
'参 数:字符串Body,编码Cset
'==============================
Function BytesToBstr(Body,Cset)
Dim Objstream
Set Objstream = Server.CreateObject("ado"&"d"&"b.st"&"re"&"am")
Objstream.Type = 1
Objstream.Mode =3
Objstream.Open
Objstream.Write body
Objstream.Position = 0
Objstream.Type = 2
Objstream.Charset = Cset
BytesToBstr = Objstream.ReadText
Objstream.Close
set Objstream = nothing
End Function
%>

时间: 2024-08-02 16:38:51

动态程序防采集的新方法的相关文章

asp动态页面防采集的新方法_应用技巧

昨天在网上看到一个防采集软件,说采集只访问当前网页,不会访问网页的图片.JS等,今天突然想到,通过动态程序和Js访问分别记录访问者的IP,然后进行IP判断,由于采集过程不会访问JS,采集的时候只会查到用动态程序记录的IP,而不会有通过JS记录的IP,从而实现网页程序的防采集. 防采集的原理非常简单,首先放一段动态语句,把访问者的IP加入到数据库的一个表里,然后在页面底部加入一个JS,JS直接访问动态页面,将访问者的IP加入到数据库的另外一个表里.再次访问的时候,从两个表里读IP数据,然后判断时间

asp动态页面防采集的新方法

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Response.Write(Server.HTMLEncode(GetHttpPage("http://localhost/Index.asp教程","GB2312"))) ============================== 函 数 名:GetHttpPage 作 用:获取页面源代码函数 参 数:网址HttpUr

非常好的网站生成静态页面防采集策略与方法_网站应用

目前防采集的方法有很多种,先介绍一下常见防采集策略方法和它的弊端及采集对策:  一.判断一个IP在一定时间内对本站页面的访问次数,如果明显超过了正常人浏览速度,就拒绝此IP访问     弊端:     1.此方法只适用于动态页面,如:asp\jsp\php等...静态页面无法判断某个IP一定时间访问本站页面的次数.     2.此方法会严重影响搜索引擎蜘蛛对其收录,因为搜索引擎蜘蛛收录时,浏览速度都会比较快而且是多线程.此方法也会拒绝搜索引擎蜘蛛收录站内文件     采集对策:只能放慢采集速度,

居然还能这样——程序员加薪的新方法

我的朋友A君是个典型的.NET开发人员,技术不错,人品也不错,在一家小公司(姑且称为甲公司)做项目开发,是技术骨干. 3个月前,他找到我说想跳槽,让我帮忙介绍工作.我说为什么想跳了? 1. 为什么想离职? 他简单说了一下他在甲公司当时的状况:A君在甲公司做了两年多,这两年多完成了一个大项目,作为开发的核心主力,开发压力很大,特别是项目上线前的 几个月是非常辛苦,几乎每晚都要加班到12点以后,周末最多只有一天休息.在最困难的时候,老板给大家大气,"大家再坚持坚持,项目上线赚钱了,就给大家 涨工资,

FLASH应用于防采集初探

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 前言 现在网站采集的普及程度大家已见怪不怪,大凡CMS都要有采集功能.对于很多站长来说,网站建设初期,采集是很必要的,然而当你的网站做大之后,防采集问题就不得不考虑了.之前鄙人在discuz讨论过相关话题,并没有人引起重视,然而准备做专业资讯站的我,没有放弃对防采集的考虑.我们的目标是:能采,能防.亦即能攻能守.有人说你卑鄙,采别人的,不让别

网站防采集方法

    第1种方法:     防采集第一招 用Persistence为静态页面增加session功能       一般来说,只有服务器端的CGI程序(ASP.PHP.JSP)具有session会话功能,用来保存用户在网站期间(会话)的活动数据信息,而对于数量众多的静态页面(HTML)来说,只能使用客户端的cookies来保存临时活动数据,但对于cookies的操作是个很烦琐的过程,远没有对于session操作那样简便.为此,本文向读者推荐一种在DHTML中的解决方案"Persistence技术&

防采集方法

这个防采集的方法是我今天在无奈之下想出来的,要开网站一看我晕不能访问,立马跑到服务器上一看,apache点N高的内存,后来在一急之下就想出了这种办法,呵呵,到底是什么方法呢,我把我防采集的过程给各位讲一下吧. 根据我分析一般这种大量采集都是现成的cms如dede ,新云,dz等,他们己经写好了方法只要你把规则放进去就行了,例如:取得文章列表页开始与结束位置,连接url的开始与结束字符,内容页面的开始与字符,就这样几句代码,就让你的服务器要命哦,根据我上面的分析我们就来写一些没有规则的可以说如果要

在ASP程序中打印Excel表格的新方法

 在ASP程序中打印Excel报表的新方法 目前,B/S模式(浏览器/服务器模式)成为企业网上首选的计算模式.由于B/S模式的特殊性,在C/S下相对较易实现的Excel报表打印功能在B/S下却成为一个难点.本人通过研究写了一个基于ASP程序的打印Excel报表的程序.本程序的特点是无须任何组件.   Print.asp ------------------------------------------------ <html><title>打印Excel报表</title&

如何让网站防采集?

网站|采集 很多防采集方法在施行的时候需要考虑是否影响搜索引擎对网站的抓取,所以先来分析下一般采集器和搜索引擎爬虫采集有何不同. 相同点: a. 两者都需要直接抓取到网页源码才能有效工作, b. 两者单位时间内会多次大量抓取被访问的网站内容; c. 宏观上来讲两者IP都会变动; d. 两者多没耐心的去破解你对网页的一些加密(验证),比如网页内容通过js文件加密,比如需要输入验证码才能浏览内容,比如需要登录才能访问内容等. 不同点: 搜索引擎爬虫先忽略整个网页源码脚本和样式以及html标签代码,然