jQuery保护网站不被仿站复制盗用的方法
1.利用仿站工具或类似仿站工具之类原理的爬取工具,批量的抓取页面到本地,适合页面类型多的网站
要想杜绝仿站工具及类似工具的爬取就需要在服务器端做好设置,允许正常的用户(浏览器UA)以及正常的搜索引擎蜘蛛(搜索蜘蛛UA,例如百度Baiduspider)访问网站的页面,禁止非法的UA,比如仿站工具前来爬取页面内容,所以只要配置好禁止爬取的UA即可:
1 2 3 4 5 6 |
#以下是nginx的配置细节,添加到server内 location / { if ($http_user_agent ~ * “MSIE 5.0|msnbot-media|oBot|YandexBot|Mail.RU_Bot|Applebot|SEOkicks-Robot|DotBot|YunGuanCe|Exabot|spiderman|Scrapy|HttpClient|Teleport|TeleportPro|SiteExplorer|WBSearchBot|Elefent|psbot|TurnitinBot|wsAnalyzer|ichiro|ezooms|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$” ) { return 403 ; } |
上面的UA都是被禁止访问的,至于返回码至于是403还是404或者其他非正常的都可以自定义。上面只是判断来访的UA,如果仿站类工具可以非常的逼真的模拟用户浏览器,那么该方法无效了。目前teleport的Pro版本是被禁止抓取的,另外一款叫仿站小工具的也成功阻挡了。至于teleport其他版本是否可以需要实际测试,并将对应合适的UA添加上去。
2.纯人工去复制页面,这样的方法适合于页面类型少,页面简单。所以只要在页面上做好相应的防护措施即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//JS代码贴到页面头部,需要jquery $ (document ). ready ( function ( ) { //屏蔽鼠标右键 $ (document ). bind ( “contextmenu” , function (e ) { return false ; } ) ; } ) ; $ ( function ( ) { document. addEventListener ( ‘keydown’ , function (e ) { e = window. event || e ; var keycode = e. keyCode || e. which ; if (e. ctrlKey && keycode == 83 ) { //屏蔽Ctrl+s 保存页面 e. preventDefault ( ) ; window. event. returnValue = false ; } if (e. ctrlKey && keycode == 85 ) { //屏蔽Ctrl+u 查看页面的源代码 e. preventDefault ( ) ; window. event. returnValue = false ; } if (keycode == 123 ) { //屏蔽F12 e. preventDefault ( ) ; window. event. returnValue = false ; } if (e. ctrlKey && e. shiftKey && keycode == 73 ) { //屏蔽Ctrl+shift+i 屏蔽调出控制台 和F12一样 e. preventDefault ( ) ; window. event. returnValue = false ; } } ) ; } ) ; |
当有人想复制页面内容的时候发现快捷键不好使了,然后想右键看源代码,也不好使,用快捷键ctrl+u调出源码也不行,调取控制台也不行,最后发现没什么好办法了。当然如果觉得不放心,可以再最后再加一道锁,按照另外一篇文章《jQuery保护网站不被仿造的方法-禁止本地加载》的思路去加锁:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//当页面被整个盗取到本地的时候,本地打开一片空白,需要jquery function authentication ( ) { var suffix = “info” , main = “wang” , red = “chao” , dot = “.” ; var d = (main +red ). toString ( ) + dot + suffix ; if (window. location. host. indexOf (d ) < 0 ) { $ ( “body” ). remove ( ) ; return false } return true } $ ( function ( ) { if ( !authentication ( ) ) return ; // 执行授权方法,检查一下当前页面域名 } ) ; //以及相同的一个思路 //如果当前浏览器域名不是 wangchao.info 将跳转到 wangchao.info 对应的页面 if (document. location. host != “wangchao.info” ) { location. href = location. href. replace (document. location. host , ‘wangchao.info’ ) ; } |
好了,以上的方法就是从复制角度出发找出屏蔽的方法,以上的JS代码可以再做一次加密来增加破解者的破解难度。如果有新的发现,会在当前页面做更新。经过以上几个步骤已经能很好的保护网站页面的了,当然想完全保护资源和代码在没有第三方软件的前提下是没可能的。
» jQuery保护网站不被仿站复制盗用的方法