
百度了一个方法,仅供参考。
robots.txt文件应该放置在网站根目录下。robots.txt文件用法举例:1. 允许所有的robot访问User-agent: * Allow: / 或者 User-agent: * Disallow:2. 禁止所有搜索引擎访问网站的任何部分User-agent: *Disallow: /3. 仅禁止Baiduspider访问您的网站User-agent: BaiduspiderDisallow: /4. 仅允许Baiduspider访问您的网站User-agent: BaiduspiderDisallow:5. 禁止spider访问特定目录User-agent: *Disallow: /cgi-bin/Disallow: /tmp/Disallow: /~joe/6. 允许访问特定目录中的部分urlUser-agent: *Allow: /cgi-bin/seeAllow: /tmp/hiAllow: /~joe/lookDisallow: /cgi-bin/Disallow: /tmp/Disallow: /~joe/7. 使用”*”限制访问url禁止访问/cgi-bin/目录下的所有以”.htm”为后缀的URL(包含子目录)。User-agent: *Disallow: /cgi-bin/*.htm8. 使用”$”限制访问url仅允许访问以”.htm”为后缀的URL。User-agent:Allow: .htm$Disallow: /例9. 禁止访问网站中所有的动态页面User-agent: Disallow: /*?*10. 禁止Baiduspider抓取网站上所有图片仅允许抓取网页,禁止抓取任何图片。User-agent: BaiduspiderDisallow: .jpg$Disallow: .jpeg$Disallow: .gif$Disallow: .png$Disallow: .bmp$11. 仅允许Baiduspider抓取网页和.gif格式图片允许抓取网页和gif格式图片,不允许抓取其他格式图片User-agent: BaiduspiderAllow: .gif$Disallow: .jpg$Disallow: .jpeg$Disallow: .png$Disallow: .bmp$12. 仅禁止Baiduspider抓取.jpg格式图片User-agent: BaiduspiderDisallow: .jpg$反爬虫就是和爬虫抗衡,减少被爬取。因为搜索引擎的流行,网络爬虫已经成了很普及网络技术, 相当部分国内爬虫不遵守robots协议。所有有了保护自己内容不让别人抓取的反爬虫需求--------------------------反爬虫方法1、手工识别和拒绝爬虫的访问2、通过识别爬虫的User-Agent信息来拒绝爬虫3、通过网站流量统计系统和日志分析来识别爬虫4、网站的实时反爬虫防火墙实现5、通过JS算法,文字经过一定转换后才显示出来,容易被破解。某技术网站采用了这种方法6、通过CSS隐藏技术,可见的页面样式和HTML里DIV结构不同,增加了爬虫的难度,同时增加自己的维护难度。技术网站采用了这种方法7、通过JS不让用户复制,这对非专业人员有效,对技术人员/工程师来说,没有任何效果。不少网站采用。8、通过flash等插件技术(会被破解,同时对用户不友好,有流失用户的可能性)。早期网站用得多,移动互联网来后,这种方式对用户不友好,少有专业网站采用了。9、图片化A:将文字图片化,增加了维护成本,和移动端的可读性B:将标点符号图片化,再适当增加CSS混淆,这是一种较好的办法,不影响搜索引擎收录,不影响用户使用。但影响爬虫,是一种较好的反爬虫方式,某著名的文学网站采用了这种方法10、交给专业反爬虫公司来处理流程 1反爬虫混淆设计器 ---->产生反爬虫混淆素材2混淆素材--->将服务器端文字变成不可阅读文字3网络传输--->不可阅读文字+混淆素材4浏览器-->绘制阶段显示可读文字5浏览者能看见内容 但是无能有效复制,无法通过底层协议抓取 6混淆算法随时改变,只需要放入新素材就可以了,不需要工程师参与。 特点依靠文字矩阵变换来提高蜘蛛爬虫软件抓取的代价.由发布人员,而不是技术人员来更新混淆算法保护方:内容保护的方法素材易复制,易部署和运营抓取/窃取方:面对对方快速变化,增加了成本ni 指的是动态加载JS么,如果是静态的JS的话,你写代码的时候,自己就应该注意了不要引入2次同样的JS
如果是动态的话,你可以引入的时候设置一个全局兑现比如 var a={}
然后用能唯一代表该JS的信息,比如js名字,或者js路径,一旦加载过后就 a[js名字] = true
所以只需要引入加一个判断 if(!a[js名字]){}