解析CSDN“登录后才能复制”功能技术原理

作者: ʘᴗʘ发布时间:2021-11-28 19:00 浏览量:746 点赞:581 售价:0

前言

最近查资料的时候,经常遇到CSDN上的文章,必须登录才能复制代码。对这个功能的好坏与否,我们不做评论,只关注一下它本身的技术。

当我写下上面的标题的时候,我一度以为CSDN是用了什么高大上的技术实现“不登录,就无法复制代码”这个功能的。毕竟,CSDN的主要用户都是程序猿啊~但最后的结果让我始料未及……

因为作者开发Coderbbb的时候,最大的一个困扰就是如何避免自己写的文章被各种采集站疯狂采集。采集也就算了,排版排的一塌糊涂,让读者十分糟心。所以作者自己特别关注反爬虫、防恶意复制等等相关的技术。(coderbbb的老用户可能知道,本站之所以有了付费文章这个功能,80%的原因是为了防爬虫,毕竟一篇文章几毛钱,可能还不够作者写文章的电费呢…………)

分析代码

先看下图,是CSDN上一个典型的必须登录才能复制代码的网页:

解析CSDN“登录后才能复制”功能技术原理

当我用F12打开调试工具,看代码的时候,内心直接就崩溃了……因为没有什么高大上的技术,就是用css加了一个user-select:none,反选掉这个CSS,就可以正常复制了……

解析CSDN“登录后才能复制”功能技术原理

感觉这个技术就是在故意制造麻烦,要么你登录,要么你还得自己打开调试工具去改CSS~~~好吧,只能说产品设计很成功,技术实现很失败。

Coderbbb是如何实现类似功能的

看过本站付费文章的同学应该知道,coderbbb付费文章中的代码片段全部都是图片。和CSDN这种在前端做反爬虫、反复制不同,coderbbb是在服务端实现的代码文字等信息转图片的。这样的话,基本就不存在破解的可能了。

版权声明:《解析CSDN“登录后才能复制”功能技术原理》为CoderBBB作者「ʘᴗʘ」的原创文章,转载请附上原文出处链接及本声明。

原文链接:https://www.coderbbb.com/articles/45

其它推荐:

  • Google AdSense广告高度宽度错误、无法自适应的完美解决方案

    本文介绍了如何设置Google AdSense广告位的宽度、高度,解决Google AdSense广告位宽度、高度过大、过小造成的页面重叠、变形问题。

  • springboot读取jar包中Resources路径下的txt文件

    springboot读取jar包中的文件是一个常见需求,本文介绍了如何通过ClassPathResource来读取Resources路径下的txt文件。

  • Springboot整合Redis和redis常用操作演示

    本文介绍如何在springboot中引入redis数据库,并执行各类redis操作。过程非常简单,只要引入一些jar包,并配置redis连接信息即可。

  • Intellij IDE代码行数统计插件Statistic推荐

    本文介绍了一种能够快速统计IntelliJ项目代码行数的插件:Statistic,通过该插件可以快速查看各个项目、目录的代码行数,还能具体查看项目中不同代码语言的具体行数,十分方便。

  • springboot3+EhCache3缓存+JDK17整合指南

    本文介绍了如何在springboot3中整合使用EhCache3作为缓存。和EhCache2相比,EhCache3的整合方法完全不同。同时,由于在springboot3中删除了EhCacheCacheManager类,也让整合方法完全不同。参考本文,可以快速完成整合。

  • nginx配置http请求301跳转https

    本文介绍如何使用nginx,将域名的http请求301跳转到https地址上。全网最简单配置,直接复制即可使用。

  • Java Springboot对接微信支付(JSAPI等)API-V3

    本文介绍了java如何对接微信支付API-V3,完成微信JSAPI网页支付。提供了完整的下单接口代码,详细解释了每个参数,可以快速的整合到你的项目中,完成微信支付。

  • 通过Maven将指定Jar包下载到指定的本地目录

    本文介绍如何使用maven把一些需要下载到本地的Jar包下载下来。有时候我们开发一些java项目的时候,并没有使用maven管理包,但是又需要一些常用的包,那么可以使用maven来将这些包下载到本地,从而导入项目

  • vue+websocket配合Springboot+netty实现基于web浏览器的IM即时通讯系统

    使用vue+websocket前端配合springboot+netty的后端来实现简单的web im即时通讯系统。支持websocket使用SSL证书加密。详细介绍了netty如何最简实现websocket的支持、WEB前端如何最简实现websocket。

  • Netty使用阿里云SSL证书配置SSL

    本文介绍了如何使用阿里云购买的SSL证书来配置Netty,使Netty支持SSL加密的TCP连接。由于直接从阿里云下载的证书文件无法使用,还需要通过OpenSSL做一些格式转换。转换好的pem和key文件,加载到netty的handler中即可完成netty的ssl升级

user

ʘᴗʘ

77
文章数
72001
浏览量
56666
获赞数
67.80
总收入