diff --git a/Chapter1 - iOS/1.56.md b/Chapter1 - iOS/1.56.md index 914b8b8..1fc2d92 100644 --- a/Chapter1 - iOS/1.56.md +++ b/Chapter1 - iOS/1.56.md @@ -505,7 +505,7 @@ -#### 关键步骤 +关键步骤 1. 先根据你们的产品找到常用的关键词,生成**词云** 2. 根据词云,将每个字生成对应的 unicode 码 @@ -574,7 +574,7 @@ h3,a{ -## [Demo 地址](https://github.com/FantasticLBP/Anti-WebSpider) +[Demo 地址](https://github.com/FantasticLBP/Anti-WebSpider) ![效果演示](https://raw.githubusercontent.com/FantasticLBP/Anti-WebSpider/master/Anti-WebSpider.gif) @@ -600,8 +600,23 @@ $ node app.js +## 五、价值和思考 -### 五、 App 端安全的解决方案 +其实经常有很多来自不同端的开发者和我聊安全问题。交流下来发现有些人可以明白设计的有点,有些人还是没有明白。这里我总结下: + +- 爬虫与反爬技术,没有终点。都是需要在衡量 ROI 的情况下, 找到符合业务、技术现状的“最佳”解决方案 +- 每次刷新,页面显示的数据固定,但是网络接口数据、审查元素看到的数据,都是不断变化的。且汉字字符、数字字符都不一样 +- OCR 可以爬取数据,但是成本较高。同样可以利用其他策略,比如同一个浏览器 canvas 指纹的情况下,短时间多次请求某些数据,则认为是非法行为,可以延迟返回数据、返回错误数据、账号封锁等策略 + +爬虫工程师要么从接口爬取数据、要么观察分析页面结构找到目标数据的 xPath 获取 DOM 节点对应的数据。从这2个角度出发,当前的设计方案解决了该问题 + +可能有些人就会问:**爬虫工程师一般会不需要关心技术如何实现,直接用无头浏览器“原封不动”的去请求,直接拿到数据不就好了** + +其实你仔细想想,无头浏览器是可以去请求,但是本质上就是对数据的只读而已。因为该方案的设计就是基于:**字体文件映射 + 数据线性加密**。**无头浏览器拿到的数据其实和审查元素看到的 DOM 节点内的数据是一个效果的。所以是无效数据。** + + + +## 六、 App 端安全的解决方案 目前 App 的网络通信基本都是用 HTTPS 的服务,但是随便一个抓包工具都是可以看到 HTTPS 接口的详细数据,为了做到防止抓包和无法模拟接口的情况,我们采取以下措施: @@ -670,17 +685,19 @@ $ node app.js 但是私钥在本地如何存放呢?想到的办法就是将关键密钥的字符串提高到较高的安全级别,比如这个文件用加密保存。接下来推荐一个[工具](https://github.com/RNCryptor/RNCryptor),可以将代码文件进行加密保存和解密访问。 +还有:数据加密、压缩 + 自定义报文 -## 六、 数据安全(反爬虫)之「防重放」策略 + +## 七、 数据安全(反爬虫)之「防重放」策略 虽然话题都是大前端时代的安全性,但是防重放策略篇幅较长,开了新的[章节](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter3%20-%20Server/3.8.md)。感兴趣的同学请移步查看。 -## 七、Canvas 反爬虫技术方案 +## 八、Canvas 反爬虫技术方案 > 后期打到白热化的时候,用的技术越来越匪夷所思。举个例子,很多人会提,做反爬虫会用到canvas指纹,并认为是最高境界。其实这个东西对于反爬虫来说也只是个辅助,canvas指纹的含义是,因为不同硬件对canvas支持不同,因此你只要画一个很复杂的canvas,那么得出的image,总是存在像素级别的误差。考虑到爬虫代码都是统一的,就算起selenium,也是ghost的,因此指纹一般都是一致的,因此绕过几率非常低。

但是!这个东西天生有两个缺陷。第一是,无法验证合法性。当然了,你可以用非对称加密来保证合法,但是这个并不靠谱。其次,canvas的冲突概率非常高,远远不是作者宣称的那样,冲突率极低。也许在国外冲突是比较低,因为国外的语言比较多。但是国内公司通常是IT统一装机,无论是软件还是硬件都惊人的一致。我们测试canvas指纹的时候,在携程内部随便找了20多台机器,得出的指纹都完全一样,一丁点差别都没有。因此,有些“高级技巧”其实一点都不实用。

浏览器指纹技术常用于客户端跟踪及反机器人的场景。核心思路是, 不同浏览器、操作系统、以及操作系统环境,会使得canvas的同一绘图操作流程产生不同的结果。如果是相同的运行环境,同一套Canvas操作流程会产生相同的结果。 浏览器指纹的优势是不需要浏览器保持本地状态,即可跟踪浏览器。 由于国内特色的Ghost系统安装,这种方式的误杀率并不低。 diff --git a/Chapter2 - Web FrontEnd/2.32.md b/Chapter2 - Web FrontEnd/2.32.md index 5044aca..8173b26 100644 --- a/Chapter2 - Web FrontEnd/2.32.md +++ b/Chapter2 - Web FrontEnd/2.32.md @@ -239,3 +239,4 @@ class Welcome extends React.Component { - Vue 设计思想:How easy it can be。React:How corrct it can be 和 all in js(css写法也在用 js 控制,比如 styled-component) +在 React、React Native、Vue、Weex、Flutter 等声明式开发思想的框架下,UI = F(state)。一个状态唯一对应一个 UI(但一个 UI 不一定对应一个 state),关心 state 即可 ​​​ \ No newline at end of file diff --git a/Chapter3 - Server/3.10.md b/Chapter3 - Server/3.10.md index 4aea693..991a832 100644 --- a/Chapter3 - Server/3.10.md +++ b/Chapter3 - Server/3.10.md @@ -7,5 +7,17 @@ 4. 基于微服务,肯定需要一个 BFF 层,扮演业务编排、字段转换。比如订单域的模型有100个字段。但是订单的接口为客户端服务,客户端(通过接口找2018~2020年的、待付款的订单),BFF 层就去扮演数据组装、字段筛选的作用。 +## 聚焦核心域 + +Domain 按照业务能力划分,围绕着一个独立清晰的业务目标,有内聚的核心概念 + +1. 核心域: +- 决定产品和公司核心竞争力的子域 +- 它是业务成功的主要因素和公司的黑心竞争力 +- 需要投入优秀的资源和精力,建立好核心竞争力 + +2. 支撑域:不包含决定产品和公司核心竞争力的功能,需要定制开发,帮助核心域达成目标 +3. 通用域:通常市场上已有成熟的解决方案,通用子域的解决方案可以来购买现成的,也可以采用外包的方式。 + - https://tech.meituan.com/2017/12/22/ddd-in-practice.html - https://juejin.cn/post/6997250621627858957#heading-3 \ No newline at end of file diff --git a/Chapter9 - Ragdoll/9.7.md b/Chapter9 - Ragdoll/9.7.md index ba66f1b..db468d4 100644 --- a/Chapter9 - Ragdoll/9.7.md +++ b/Chapter9 - Ragdoll/9.7.md @@ -8,8 +8,11 @@ 2. 消炎 调节消化系统三天没有大的作用可以考虑为猫咪消除肠道炎症。 -这里有一个消炎药选择的问题:在肠道感染中99%都是由杆菌引起的,对付杆菌最好的选择是硫磺庆大霉素、卡那霉素等药。其中由于庆大霉素的分子量比较大,口服不会被内脏吸收,是猫咪处理肠道炎症的首选药物。   +这里有一个消炎药选择的问题:在肠道感染中99e%都是由杆菌引起的,对付杆菌最好的选择是硫磺庆大霉素、卡那霉素等药。其中由于庆大霉素的分子量比较大,口服不会被内脏吸收,是猫咪处理肠道炎症的首选药物。   需要注意的是,在服用消炎类药物半个小时后,需要给猫咪喂些活菌类的助消化药,如乳酶生、妈咪爱等,帮助猫咪恢复消化能力。 3. 饮食 -肠炎严重的话,建议每日以吃流食为主,少食多餐,如果拉稀呕吐比较频繁(尤其是拉肠粘膜时)应禁食禁水12个小时左右。 \ No newline at end of file +肠炎严重的话,建议每日以吃流食为主,少食多餐,如果拉稀呕吐比较频繁(尤其是拉肠粘膜时)应禁食禁水12个小时左右。 + +4. 猫藓 +小奶猫20天左右可以打大宠爱在猫咪的耳朵边上。1g左右 \ No newline at end of file