settings 配置 but name 就是 爬虫行走江湖用的名称 spider modules new spider module 这个我们先也设成 false 并发请求数 超过来了哦,这里 这个也改成零点五吧 download 哇,把注视的去掉就行了, 数值越小优先级越高, 先验证数据,再去重,再就储存到数据库。
粉丝256获赞324

在抖音做科普比在非洲支教还难。我以为是个玩笑,直到我发了那个开始你的第一个爬虫程序。本来呢,想老老实实带小白入个门,结果评论区真的是让我大开眼界。还有一个假科普真装逼的,他怎么说的?他说啊,这玩意还用教?能爬的随便爬,不能爬的你非要爬就进去了。 阿里二十六 k 到五十 k 十六星的岗位数据采集不用学的话建议直接去捡钱啊,晚了就被别人捡走了。我们不说正经的高级爬虫工程师, 某 boss 上的岗位标出来的薪资打折,还有五天还有各种数据采集单像外包啥的。现在干 java 的 世界转 ai 还得从头学 python。 你 跟我说 python 基础不用学,你跟我说爬虫基础有手就行?我就纳闷了,你学微积分之前九九乘法表都没背过吗?我的标题是第一个爬虫程序, 爬虫跟数据采集在逻辑层面上难道不是一个东西吗?你刚学会走路,我带你去爬马拉松吗?还没学会请求解析存储我就教你过指纹,过魔改的 t l s, 过混响加密。我视频的六步是教基础请求解析加存储的,这叫注机。 你要是真的是行业顶级大佬,你指出我的认知误区,我绝对虚心受教。你如果是个干写 request 就 觉得自己是个天才,甚至连个正则都写不明白的,就来嘲笑基础教学没意义,那真的有点搞笑了是不是?你当个木匠学徒,居然笑话鲁班在教人刨木头 那。所以说,今天啊,我必须要对正儿八经的科普一下爬虫到底是什么。如果你对爬虫并不了解,只看了一些评论和视频,那么现在打开 boss 直聘,你去搜一搜,搜数据采集工程师或者高级爬虫工程师,你看看阿里、腾讯这些大神, 看看那些对应的岗位,如果这些活是不正经的,学了就得吃牢饭。那大厂招的是工程师还是进去采风问机的?这就是一个正经的一个技术岗位,工具,他是无罪的。就好比厨师手里一把刀啊,人家那是用来切菜串收生产力的,你非要拿它去干坏事,那是人的问题,不是刀的问题, 对吧?爬虫是什么呢?爬虫其实就是自动化数据采集,那无论你学什么内容,肯定都是从基础一步步来的,那比如说你看这里, 首先我们从我们的基础编程语法必修开始啊,学习我们的一个 python 基础内容啊,比如说 python 三的入门,以及列表和源组字母串字典,还有我们的条件循环语句,还有我们的函数, 再到面向对象编程,再到异常和文件处理,那这一部分其实就已经完成了我们整个 python 基础阶段的学习。那后面的呢?哎,就是一些拓展内容,那这份内容呢?有网络编程对不对啊?你得了解 t c p、 i p 这些东西吧,你得知道它是个什么事吧?啊?你得了解这个病发编程吧,比如说多现成啊,多携程啊,多进程啊,啊, 一步啊,对不对啊?以及一些数据的存储对不对?比如说 my sql 啊, database 啊等等等等。那这部分学习完之后,哎, 基础搞定了,我们可以去往爬虫基础往下走啊,那在这里的话呢,爬虫基础它是分了很多的啊,比如说有这种什么来采集功底的,对不对?比如说那前端网页它是一个什么样的构造啊?网络请求是怎么发送的?网络请求是什么意思? 数据如何解析?数据解析有多种方法?什么方法?数据入库怎么入库,对吧?多任务怎么采集?数据怎么展示?以及 ai 和爬虫的一个结合实战啊, 还有我们的自动化对不对啊?有现在最新的这个追声配置啊,还有这个 signal 等等等等,很多自动化的工具供我们去选择。那你也得清楚不同自动化工具之间他们的内核有什么区别,对吧?在反爬上面他们能做哪些事情,对不对? 还有我们的框架啊,比如说啊,这个 scrapy, 对 吧?啊等等等等,这些框架它的一个学习。那好,那这份学习完之后就到了什么?到了我们的逆向专题。 逆向的话呢?首先啊,我们得知道如何调试浏览器啊,对吧?调试浏览器这一查过了之后,哎,重点是什么?重点是我们的标准加密算法啊,有哈西啊,有对称啊,有非对称啊,有国密啊, 对不对啊?还有它的一些模式,哎,比如说这个微博帕克啊,啊,这是模块打包的,我说 j s 混淆的一些内容,比如说,哎,对应的 ai 的 与加密混淆的处理,还有 cookie 的 一些反法的处理啊,以及 j s i p c 的 远程调用处理, 还有 gsm 啊,以及一些安全产品的公繁啊,比如说瑞树啊,加速乐啊,对不对?以及阿里系的一些啊,卡麦的一些啊等等等等。 那再往后走呢?就是 st 抽象语法术去做一些解混小混小的还原,还有这个浏览器拓环境,也就是我们补环境的一些内容,对吧?啊?如何去操作对不对啊?然后呢,还有我们的小程序逆向以及验证码专题等等等等,那我们肯定是要从最基础开始,一步一步才能走得到这个对抗的这条路上面, 对吧?啊,你不可能说我今天刚学会了走路,迈左脚迈右脚,明天呢,我要去参加奥运会,可能吗?啊?还有对应的练手的时候怎么找安全的往上爬啊?为什么会遇到这些风险?我举个例子,你自己都知道一些棋牌类的东西啊,不能碰对吧?一些隐私数据不能碰, 你这会你干爬虫了你就忘了是不是啊?说白了我们就是一个老老实实的老农民,哪有那么厉害对不对啊? 爬虫呢,他就是一个普通的技术,他就是一个普通内容,大家如果想学习,那就认认真去学啊,对于那些只会装逼的键盘侠,那真的对不起啊, 月薪五十 k 的 坑位,你可能真的捡不到。好吧,如果你也对拍粉爬虫感兴趣,主播将毕生所学都拆分成了这些,从零到进皆全流程,按照八十老奶都能学会的方式讲解。

开伞爬虫教程第七集 cookie 的 使用在网站中我们会发现,登录之后用户可以看到更多的内容,比如购物网站中的购买记录,个人信息等等。 这些内容通常需要我们在访问网页发起请求时输入了登录信息才能够获取。每次想要看到新的内容,刷新网站时都会发起一次新的请求, 服务器就会像第一次见到你一样要求你重新登录,那也太麻烦了吧。为了解决这个问题,这个时候我们就可以使用上 cookie 了。 cookie 就是 保存了用户信息以及用户的喜好的一串字母。当你使用浏览器第一次登录该网站时,服务器就会创建这个 cookie, 然后响应内容的同时, cookie 就 会被浏览器保存下来。浏览器在下次向同一个网站的服务器发起请求时,就会携带它。服务器经过识别 cookie, 知道了用户的身份,就可以避免重复登录,并且能够根据用户的喜好响应页面内容。 为了更便捷的浏览网站,提升用户的体验感,在浏览器中发起请求时,携带 cookie 就 变得非常重要了。我们怎么才能找到这个 cookie 呢?首先我们打开浏览器, 在网站中我们有两种方式可以进入开发者模式,第一个就是按下键盘中的 f 十二键,第二个我们可以在页面中空白的位置右击点击检查, 找到网络的选项卡,然后刷新一下,重新加载数据包。在这里我们可以找到最上面的文档, 在请求的标头内找到这个 cookie, 那 么这个 cookie 就是 浏览器保存的 cookie 了。 有同学就会发现,这个浏览器中我并没有登录,为什么还会有 cookie 呢? 这是因为 cookie 分 为两种,第一种,临时 cookie。 如果你没有登录网站,浏览器会设置一个临时 cookie, 发送请求时携带给服务器。 这个临时 cookie 在 浏览器关闭之后会自动删除。当然这种临时 cookie 也没有保存个人信息和个人账户的作用。第二个,持久 cookie, 这个持久 cookie 它会设置有效的期限,有些网站可能是三到五天,有些可能是半个月或者一个月。大家可以观察,我们在浏览器中登录了一个网站之后,过一段时间再次进入的时候,您就是需要重新登录呢,这就是因为 cookie 已经过期了。 了解了 cookie 的 类型以及获取方式之后,我们进一步来看在爬虫程序中如何实际应用。 通常来说,我们有这么几种情况,在爬虫程序中需要使用到 cookie。 在 网站中,如果需要登录才能访问的页面, 例如用户个人中心或者账户信息,会员专属内容等等,那么我们就需要使用到这个 cookie。 第二种,保持绘画状态。像我们在网站中浏览小说,每一次翻一页或者点击到新的下一章, 就需要刷新一下页面,那么就要保持这个 cookie 状态的存在,那么我们就需要使用到 cookie。 第三种,某些网站通过 cookie 验证请求合法性,首次访问会设置 cookie, 如果没有检测到 cookie, 那 么就会认定你是爬虫,不返回给你信息。这个时候我们就需要在爬虫程序上携带上 cookie。 如何在爬虫程序中携带上 cookie 呢?两种方式,第一种,在请求头里面携带 cookie, 这种方式我们可以在爬虫程序中这么写, 将 cookie 加入到 healers 里面,然后爬虫发起 get 请求时,携带这个 healers 里面的 cookie 就 可以了。第二种方式就是设置 cookie 参数,我们可以创建一个 cookie 字典,然后将 cookie 里面的属性和值写到里面,然后在发起 get 请求的时候 加入上 cookie 这个参数。那么讲了方法之后,我们在拍唱中来练习一下到底如何正确使用吧。这个视频我们要做的是抓取百度登录后的个人中心页面。首先我们在浏览器中 打开百度,我已经提前登录好了百度的账号,那么我们要抓取的页面内容就是这一页的个人中心。 我们做了一个爬虫程序,需要获取到登录的网页 url, 那 么我们在浏览器中直接在地址栏里面获得这个 url, ctrl 加 c, 然后复制粘贴过去, 写上 url, 等于刚刚复制的那一串 url。 发起请求我们需要使用到 request 库,那么在这个上面我们先来导入 request 库, 导入 request 库之后,我们来抓取这个网页中的内容。抓取网页中的内容不只是需要单纯地发企业的请求就行了,因为网站的服务器会识别是否是爬虫,那么我们就需要写上一个 healers, 在 healers 里面 创建一个字典,在 heds 里面写上 user agent。 如果 user agent, 我 们也可以在百度的开发者模式里面找到网络,然后刷新整个页面, 刷新之后我们找到这个文档,就是整个页面的 h 页文档,点击之后找到请求头里面的 user agent, 直接复制粘贴就行啦。最重要的一点就是 user agent 我 们复制过来 是这个样子的,我们需要将它切换成字典中的键值,对,那么写上 user agent, 然后写上冒号, 将它改为字母串模式之后,我们还要获取到的 cookie。 为什么要获取到 cookie? 因为是在登录后才能出现这个页面,没有登录就没有这个界面,那么获取这个 cookie 也是在这个选项卡的网络中 找到这个 cookie 直接复制。大家要注意的一点就是不要复制多了,也不要复制少了, 然后在拍唱中粘贴进去。我们需要注意的一点就是每个键值队之间我们需要用逗号隔开,这是一个非常细节也非常小的一点,很多同学可能会忘记,那么现在我们在 user agent 的 这个键值队后面加上逗号之后, 写上第二个箭指,对 cookie 粘贴过来,写上 cookie, 加上这个冒,大家会发现还是爆红,这是为什么呢?因为我发现百度它有一个问题,就是它在它的 cookie 里面加入了一个 双引号,那么这个双引号就会与前面的配对,我们构建的这个字母串就不会成功。想要取消这个双引号在 python 代码中的作用,那么我们就需要使用到转移字母,将它变成一个普通的字母, 然后我们再滑到后面去,这个也是百度自带的一个双引号,我们也加上,然后在这里我们重新给他加上引号。 获得到了这个 cookie 之后呢,我们就可以使用 heaters 发起这个请求了,写上 response 等于愉快的发起了请求。那么这个 cookie 呢?因为我们并不是创建了 cookie 属性,直接只要写这个 heaters 就 可以了, 现在我们来看一下能不能发起请求成功打印一下我们发起请求的状态。现在来运行这段代码,可以看到 运行结果是两百,说明能够运行成功。成功运行之后,我们就来保存这个个人中心的页面。首先我们注视掉这个打印的状态,写入文件 with open, 在这个页面中,我们将页面的内容写到这个 html 里面,再来运行这段代码。进程结束之后,我们直接看到这里已经出现了这个,那么我们打开这个页面,直接在浏览器中打开, 大家可以看到我们几乎得到了一个与个人中心完全一致的页面,这就说明我们已经抓取成功了。还有一些不一致就说明它并不是写给物在 html 文档中的内容。 总之这个 cookie 呢,是网络爬虫中重要组成的部分,合理的使用 cookie 可以 帮助我们为后续更复杂的爬虫场景打下基础。

逼自己十天学完 python 核心语法,你会发现你真的很牛逼,纯干货,不废话,存下吧,真的很难找全了!警告,本视频耗时六个月制作,制作时长六百分钟,陪你系统的学习 python 核心语法,这应该是目前抖音具良心全面的入门到进阶的 python 全套教程了,哪怕你是零基础也能听懂。 为了打造这套 python 课程,我系统研究了国内大量教程,发现普遍存在内容杂乱、节奏拖沓、实践不足等问题。相信大家在之前也或多或少的看过 python 的 系列视频, 但是网络上学习 python 编程的资源太多了,家家都说自己的最好,这个难为坏了有选择困难症的伙伴们。这些视频总结下来就是鱼龙混杂,滥竽充数。 所以我决定摒弃所有的花里胡哨,用最原始、最直观、最纯真的方式呈现出来,能让大家最直接、最快速的吸收,并且最大程度上的活学活用,带大家由浅入深地从零开始学习 python 编程。 除此之外,我把学习 python 的 路上所需要的学习包都准备好了,有搭建 python 开发环境的资源包,还有详细的 python 学习计划表,路线,几十上百记素材,电子书籍和教程等等, 只要你能想到的素材,我这里几乎都有,我都会整理起来放在粉丝群,有需要的伙伴留言打卡学习,可一步获取。 相信我,这套 python 系列教程将是最齐全、最详细,讲解清晰易懂的小白专用课。如果看到这里对你有所帮助的话,请给我一个免费的赞吧,让更多想要学习 python 的 小伙伴看到这个视频, 真心希望各位观众老爷们不要白嫖,今天我们学条件判断衣服语句。 好,那接下来咱们来看一下这个条件判断啊,那这个条件判断呢,在我们的程序里面是特别特别的常见,也特别常用的一个东西,也很简单啊。那首先什么时候会用到这个条件判断?其实很简单,之前我已经聊过了,就比方说我现在兜里有钱了, 对吧?兜里钱多了,钱多了呢,我想搓一顿,好的,我想来一个铁锅炖,对吧?来,铁锅炖的话,我得先判断一下我兜里有没有钱呢, 对吧?有钱了我就铁锅炖,没钱呢啊,就回家啃咸菜,对不对?所以此时我们的条件判断,其实就是当我们某一个条件成立之后,我要做一个什么什么事情,条件如果不成立,去选择另外一件事情,那么此时你想象一下,我们的程序是不是相当于产生了一个分支啊? 不对,程序从这往下走,走着走着,哎,在这块我得判断一个条件,这个条件如果成立了往这走,如果不成立了,往这边走,对不对?哎,这就是条件判断啊。那条件判断我们常见的这个语句呢,就是 f 语句 啊, if 语句的语法规则。来简单跟各位说一下啊,这语法基本上就是这样, if 空格后面跟上条件。哎,如果条件成立的话,我去做什么什么事情啊?那我们往里面怼个 pass 啊, 那这个就是第一种我们常见的 if 的 啊语法规则,那么它的意思是如果条件成立,就执行这个 pass 的 代码,不能说 pass 代码吧?啊?这个代码就成立,就就执行这个代码 啊,如果不成立就不执行啊,特别简单的一个逻辑。来,我们来看一下啊,这第一种语法 啊,第一种对不对?比方说我现在兜里有钱了,是吧?有钱码内。 对啊,满内等于五百啊,等于五百,如果空格你的钱,哎,大于了多少呢?大于了这个,这个三百,哎,我们就可以去,干嘛干嘛,注意,这个地方有一个冒号啊,个冒号我行不行?哎,行了,就这个地方有一个冒号啊,冒号。一回车你就会发现不一样了。 哪不一样了?之前是不是顶着这前面写的,但是现在你一回车他发现,那这拍叉不告诉你在这写,什么意思呢?注意, python 里面没有大货号的这种啊,就是代码的范围的这么一个约定,所以 python 里面为了控制这个代码的层级,就用这个缩进 啊,这个缩进来表示这个代码的这个层次关系。比方说这里面我啵儿敲一下来,你发现这前面有有有有有一个啊,缩进的一个效果,那我就可以在这儿,比如说 print 一 二三啊,然后再 print 一个来,四五六,注意看啊,再来 print 七八九,注意看这个。 print 一 二三和四五六,注意看这个。 print 七八九,注意看这个。 print 七八九,注意看这个。它会执行 这两样东西,当这个条件不成立的时候,这俩玩意就不执行。也就是说不论你成立不成立,下面这个玩意一定是要执行的, 懂我的意思吧?就成立的时候会多执行一段代码,不成立呢,无所谓,直接往下走,知道吧。所以这里面 python 其实相当于用这个缩进啊,把这个这这两行代码牢牢的,是不是拴在了这个 if 里面, 对吧?把它框在了 if 里面了。而对于其他语言是这么做的,其他语言是加了个大括号,比如说加网,比如说 c, 对 吧?都是加个大括号,把它们括起来代表的是啊,后面这个代码块是是是跟这个 if 条件判断,对吧? 就是形成一一定的关系的,知道吧?所以拍摄里面他有一个特点,就是他必须得保证这个东西啊,这个东西他是有一个统一的规则和规律的,你不能这,哎,少一个,这他多一个不行, 知道吧?解释器就懵逼了,解释器他就是一开始那是多长好了,下面就应该多长啊,你下面这个,上面这个不 就长度不一样?好了,你这块一定有问题,他就报错了,知道吧?所以这个地方啊,一定要严格的去呃,遵守他的这个规则啊,这个地方你可以敲四个空格,也可以,干嘛呢?就是,呃,敲黑车,或者说是如果你顶格的话呢?摁一下你电电脑键盘上 q 左边那个键叫 t a b, 摁一下就过来了 啊,这个东西叫缩进啊,这个东西叫缩进。好了,那这是 a f 条件,那接下来咱们试一试吧,比方说,哎,这干掉了啊,比方说,有钱了,有钱了干嘛呢?呃,铁锅炖 可以吧?铁锅炖,然后这个呢?回家没问题吧?哎,走,看 五百大于三百,是不是条件成立?条件成立是不是铁锅炖去?铁锅炖完了之后呢?是不是程序还得接着往后走啊?哎,该回家回家,该干嘛干嘛,但是如果你兜里没钱,一百块钱, 对吧?这个条件是一百块钱,一百块钱大于三百是不成立了。不成立还铁锅炖吗?不,铁锅炖,但是程序是不还得接着往后走啊?接着往后走是不该回家,回家呀,所以这个时候走,对吧?只能回家。吃不了铁锅炖啊,吃不了铁锅炖,所以这种逻辑相当于什么呢?相当于程序这样去执行, 哎,这样去从上楼下去执行,执行,执行着干嘛呢?这块,哎,产生了一个条件判断,如果条件成立的话,哎,他去执行一个其他的东西,哎,执行一个其他东西,其他东西执行完了,回到这,哎,接着往后去走,接着往后去走。当然这个什么是不条件成立啊? 哎,条件成立啊,那如果条件不成立,是不也得往后走?不管条件成不成立,这后面代码该怎么走还怎么走, 知道吧?很多小伙伴就是一写完 if 之后,后面这玩意怎么咋怎么整了,不会了哇,一瞬间懵逼了啊,这,这个不,不至于啊,不至于,所以你把这个好好的去写一写,理一理啊,缕一缕, ok, 那 这是咱们要聊的 if 的 第一种语法。 好,那 if 的 第一种,咱们学完了之后,咱们来看 if 的 第二种语法啊,这我会标一下啊,这是第一种语法规则,哎,是这个样子的,那么它的第二种语法其实就跟刚才我第一次画那个图就很像了,它可以做一个条件的判断, 哎,条件判断,如果条件成立呢?执行代码对不对?如果条件不成立,你去干另外一件事情 啊,代码。所以这个时候我们的整个执行过程是,如果条件成立,干嘛呢?执行代码一如,否则,哎,否则 执行代码二。所以这俩玩意他相当于是个队里面,懂吗?是个队里面二选一,懂不懂?二选一。选择他的前提是他的条件得是真, 反过来条件如果是真一定执行他条件如果不真是假的,那就走下面这个啊,所以他的翻译过来叫否则 else 啊 else。 来,我们看一下视力。这个干掉啊,来,我们写下第二种。 哎,第二种。第二种呢?就就就我我我直接写一个就是比较好一点的程序啊,比方说还是兜里的钱,对吧?兜里钱,这回我不确定了,让你输入 对不对?你给我输入,请输入你兜里的钱。好了,你输入完钱之后我有了钱就可以做判断了。如果你兜里的钱大于五百我不吃铁锅炖了,我要 干这个事情,哎,不行不行不行不行啊,行吧,好,否则,哎,我去干另外一件事情 对不对? ok, 搞定。哎, sorry, 搞定。那么此时程序是不是有两个方向去走啊?你的钱如果大于五百干这件事,不大于五百干这件事情对不对?他俩是对立的对不对?来,我们来试一下啊。走, 看着,我现在有九百块钱,哎,看,我们又见了一个错误,这个错误什么呢?说这个大于号啊, not supported, 就是 不被支持,不被支持。不被支持在哪呢? between instance of str and int instance。 实力就是数据好吧,你你把它当成数据就可以了,在什么和谁谁谁谁之间,在四幅串和 int 之间,不支持使用 单位号。哎,哪能来这玩意呢?五百 int money 哦, input 是 吧? str 啊,对不对?所以此时我们是不是还得 是不还得干这个模式,哎? int 码可以吧,对吧?把这个码内给它转化成 int 类型,再重新复制给这码内,这码内是不是变成数字了,对不对?来,我们再试验一下啊,走好了,我兜里有钱了,九百块,走啊, 干大事情是吧?那兜里没钱,那就九块钱,那回家姑娘对不对?所以此时我们这个程序就相当有了两个方向啊,两个方向对不对?来,我们就可以说 程序过来执行的,执行的对不对?判断一下有没有钱呢?有钱,哎,干这个事,没钱干这个事,对不对?所以 if else 他 俩你可以认为是一个对立的,一个啊,一个效果啊,成立干这个事,不成立干这个事啊。 好,那这是 if 条件的第二种写法把,这个各位可以去尝试去写一写,练一练啊。 好,那接下来咱们来看一下 if 语句的第三种语法规则啊。那么在刚才的学习当中,我们其实已经可以写出来一个比较不错的程序了,比方说,我判断一下我兜里有没有钱,对吧?有钱的话可以去做足疗,否则的话就不一样。那么我还想干嘛呢?就是有钱吧, 我们就可以做很多很多的选择,比方说我选择真的选择做足疗了,但是呢,我还得判断一下我兜里的钱啊,我可不可以选一个价格高一点的套餐或者价格低一点的套餐, 对吧?因为在这我我还想做判断,哎,我还想做判断,那么也就是说我们 f 可不可以做欠套呢?当然是可以的,来,各位, f 语句可以 互相欠套啊,可以互相欠套,比方说我们可以这样啊,来,这样搂搂过来对不对?在这个地方还可以继续 f 怎么怎么着对不对?一个冒号回来推进去 对吧?可以继续往下写啊,当然你还可以跟什么呢? else 这么卡,叭叭叭接着往下写下去,对吧?所以这个东西就很活很灵活啊,比方说我们来把这个真的把程序写出来啊,来,我把这个复制一下。注,是啊,来第三种, 来第三种,走来过来。走好了,接下来我依然让他去给我输钱,好吧,码那等于应成来引 put 就 直接这样写了啊,请输入你兜里的钱,好吧, 就这么写下来的来,这个能看懂的各位,就是我把上面这个东西就是相当于给他扩进去了啊,把这个音音,他这个东西把那个那个音符的扩起来了。好,接下来多判断。如果你兜里的钱怎么大于一千块的时候, 哎,大于一千块的时候你是不是可以去做足疗了对不对?可以 free 一下干嘛?是不是?做,哎?做足疗对不对?然后 else 来 free 一下,干嘛?回家五姑娘 啊,但是呢,做足疗屋是不是还可以选套餐呢?各位对不对?如果我我我大于一千的前提下,如果我兜里的钱我靠,这回爽了。如果他大于多少呢?大于五千对不对?充个 会员卡没毛病吧,对不对?还能给我打折呢对不对? else, 否则的话干嘛就就洗个脚,哎,就走 可以吧,对不对?所以这个时候我我会发现这个东西还可以在钱掏我大于五千的时候充会员卡,我可以选择,对吧?充八千充一万对吧?随随便选择对不对?你又发现这个东西可以无限的往下挪下去,对不对?无限的往下挪下去对不对?来,我们来试验一下这个程序啊,走 啊,这回程序的分支就多了啊,比方说我今天穷,就八块钱,八块钱没得说,这里面进不去,对吧?直接就无量,去吧,走, 那回来屋呢?走,你现在兜里钱多了,对吧?我一千两百块,一千两百块,一千两百块,这个条件是不是成立?成立是不是可以去去去去,去洗脚呀?洗脚的话还得判断一下啊,大不大?有五千呢? 不大,充卡充不起。那怎么办呢?洗个脚就走呗。哎,好像也没没也没问题,走,洗个脚就走。那再往下我还可以干嘛呢?比方说我兜里的钱特别多,今天发了,对吧?一万五千八,走,哎,我就可以充个会员卡, 对不对?所以这个时候你会发现 if 可以 无限的往里面进行嵌套啊,无限的往里面进行嵌套,你还可以套很多很多东西,对吧?所以这个是我们要讲的这个条,就是 if 语句可以互相的嵌套啊这么一个 规则。但是呢,你如果说真的要往死里去嵌套的话,你会发现越套越深,越套越深。所以第四个要聊的就是想办法不让它套的那么深,还能实现这些功能啊。 好,那接下来咱们来聊这个第四种方案啊,咱们说如果让这个 if 嵌套的太深的话,是不是就不舒服了,对不对?太深呢?肯定不舒服,所以这个时候我们得想办法,哎,让它别套的这么深啊,让它浅一点,那怎么办呢? if 的 第四种语法来。 if 的 第四种语法,如果,哎,某个条件成立,我们去执行代码一, 哎,后面可以跟上这么一个玩意,叫 l e f, 条件二来去干这件事情。哎,然后呢,还可以接着 l e f, 条件三 啊,代码三,以此类推,后面就不写了,你可以不拉不拉不拉,写很多,随便后面,最后也可以跟上 else, 对 吧? else, 然后不拉不拉不拉,不拉不拉, 对不对?那他的含义就很好理解了。如果条件一成立,执行代码一,否则的话,听好啊,前提得是这个,一不成立对不对?一,否则肯定是钱不成立才能走到。否则吗?对不对?否则,如果条件二成立,执行代码二, 对不对?再否则,如果对吧,条件三成立,执行代码三,如果上面的都不成立,最后 else 收尾啊, else 收尾。所以这个程序我们就可以利用这种语法规则把它做一定的调整。哎,比方说,走试一下啊,来第四种啊,这一种用的比较多, 用的比较多,但是你你你如果能能看明白的话,其实很容易的啊,很容易的,比方说 一切都从这开始,如果大于一千块,对不对?我就可以考虑 啊,洗脚啊,大于一千块不行,大于五千块。各位,大于五千块,我不光洗脚,我还要充卡呢,对不对?哎,我要充卡,对不对?好了,接下来可以看了。哎呦, 那意思什么意思?是不是?否则对不对?一,否则的话,是不是当他不成立的时候,你就说当他这里面就会隐含这个条件,就是你的这个 money 不 大于五千,不大于五千的时候,你的 money 大 于一千。 那这什么意思?是不大就在五千跟一千之间呢?在这之间的话可以干嘛?是不就是洗个脚回家对不对?再否则 你又没五千块钱,你也没一千块钱,你怎么办?你只能回家对不对?来,我们来试验一下啊,走钱的话六千块走,充个卡没毛病吧?来走,这个时候,哎,我点多了啊, 顶多了来,呃,三千块,哎,三千块你要你就要琢磨琢磨,如果三千成立吗?不成不成立的话干嘛?是不是走这个就得大于一千呐?三千大于一千成立啊,成立回家洗个脚对不对?咱走啊,洗个脚回家啊,那再走兜里就八块钱 啊,自己回家玩去对不对?所以这时候你会发现啊,我们的 a 处条件对吧?就就就就就不像之前的对吧?一层一层的,那么 a f 和 l f 之间这里面代码也可以再次嵌入 f 语句对不对?就说白了这些玩意可以互相的潜逃,想怎么用就怎么用,这里面唯一不能单独拎出来用的是 else, 你 不能说啥也没干呐,来看呐看呐,各位 就它不行,你不能单独的说我 else, 我 要吃 吃饭对吧?否则我要吃饭。那那前面干啥了对吧?前面干啥了?这什么条件呢? 对不对?你就否则了,啥都没有不行对吧?所以 else 和 elif 你 不能单独的去用它,这是唯一的硬性规定,其他的随便套随便用,比如说 if, 单来个 if 可以 对吧? if else 可以 对吧? if lif 可以, 懂吗?啊你你你可不能这么干,你不你不能 f 啊,然后呢?再来一个,哎 sorry f 直接跟个 else 然后再来 f, 这么看也不行。各位你你你细品你你你你读一读 对吧?如果条件成立啊,负责干这个事情,对,那还有他啥事呢?永远没有了,对吧?所以不能这么干,是吧?所以基本上 if else 的 用法就是我所总结的这这这几大类,那基本上就这几大类,那这是关于 python 里面如何来做一个条件判断这样的一个东西啊?这样一个 东西, ok, 那 条件判断,咱们就说这么多,谢谢各位。

爬虫 js 逆向教学第九期 a e s m 第五 r s a 加密来看一个 js 逆向的 ga 的 一个网站, 像这个接口发起请求之后,可以看到这是最终的一个响应数据,这个响应数据很显然是做了加密的,那我们怎么去进行一个解密?更多 js 逆向实战视频,海量项目源码学习素材,疑难解答可以在这获取。直接来进行一个关键字的查找方式, delete 来进行一个查找, 在这里我们可以选择它定位到这样的一个位置,很显然它是用了 aes 的 一个加解密的操作,那我们在这可以打一个断点,下面这里可以看到它是返回了一个最终的一个字串,也可以打一个断点, 接着我们来做一个翻译,可以看到它定位到了这样的一个位置,那这个提示我们刚刚加密之后的一个数据,要对这个数据进行一个解密,最终过来之后可以看到是 decret, 把这个数据进行一个解密操作, 我们接着往下面调试一下,可以看到这个啊点 two three, 他 这一块是最终的一个输入结果,所以这个方法很显然我们需要的,我们可以直接把它给抠出来进行一个操作,来打开这样的一个拍唱,整理好,其实我们去打印一下这样的一个 b 函数,来个 log 翻译过来括过来,在里面我们可以去传一个 t, 那 现在这个 t 很 显然就是我们刚刚要解决的一个数字,来代回音起来,我这边把这个 t 数字就给直接给复制了, 全部给它复制好粘贴过来之后,那现在我们去运行肯定会是报错的,因为它少了这样的一个 d 点 a, d 点 a 呢?它是一个对象,我们可以用 crab 的 js 去进行一个替换。 那首先我们先来运行,看一下,它这个结果肯定是报错的,少这样的一个 d 点 a 的 好, ok, 那 这个时候我们怎么去操作呢?前面先来导一个库,只用这样的 crab 的 js require, require, 大家分起来,我们来导一个 crab 的 js, 导过来之后给它命名一个名字,一个名字,接着把这里改成一个大写的 bug s, 那 后面这一块我们可以直接替换下这样的一些 d 点 a 了, ok, 把它拷贝一下来,直接 ctrl 加 r 来进行一个替换,全部替换完毕。那 ok, 这边还有一个点,就是下面这个 d 点 a 要替换一下。好,有了之后这个 n 和 f 它很显然是没有的,我们先注意 a, a 是 有的,它是传进来的,输入结果 f 没有的,因为它是一个钥匙。 m 这个项链也是没有的,我们接着运行一下,可以看到它这里面也是报了这样的一个错误。 f, 那 我们怎么说?拿这样的一个 f 在 这个上面是有的, 直接可以把它记拷贝,它其实就是我们的一个密钥,这个密钥它不是我们需要的,它是一个假的一个密钥,真正的一个密钥在哪个位置?这个下面我们下面走 这个密钥,它是最开始你运行代码的时候,它会加载一下,所以不要被误导了,这个地方很容易被误解粘连过来。 还有这样的一个 m 也是一样的,那 m 我 们刚刚前面那一个,我们选择这个断点一点啊在这个位置把它进行一个拷贝好,接着来到这个前面把它整理好, ok, 这个时候我们再来点击右键进行一个运行,可以看到所有的数据还没有出来, f 少了的 f f 在 哪个位置,在这里把这个低点也用这个括号的 j s 来进行一个替换, 整理好, ok, 这个时候是运行的时候,可以看到这种的输入全部都已经出来了。来看一个 md 五加密的一个网站,我们在前面先来输一个账号,并且来一个密码,待会就勾一下它的一个代码 点,登录之后可以看到抓到的这样的输入包,选择第三个,像这个接口发送了一个 pos 形,就把这个参数带了过去, 可以看到第二个他这块是做了一个加密处理的,那接着我把它进行一个拷贝,直接进行一个搜索好,查找之后可以看到这里面没有关于加密的一些地方,再来加一个等于号按一个回车。 有各种 md 五的,我们其实可以来到这个位置,把它进行一个断点,做一个调试,打一个断点,这里打上第二个选择,再来打一个断点, 第三个位置也来打一个断点,再去激活一下他的一个代码的一个位置,先来打一个断点,因为他也不知道走了哪一行好。打好之后接着在这里输入一个验证码, u q f g 来点一个登录,可以看到他激活了这样的一个断点,其他的我们就可以消掉了。再到这里来一个断点, 也就是说他向这个接口发起了一个,把这个参数传给了这个 p 点 m d 五,那现在我们可以把这一块进行一个输入, 可以看到这个结果是 i 五 d 开头的,跟我们网络模块这一个 i 五 d 开头是一模一样的,所以接着我们就来 copy 一下这样的一个 md 五的一个代码, 直接可以把它给拷过来,挑到里面去,就这样的一个实线,那接着我把这里缩小一下,我把这一块整个进行一个拷贝好,来到我们的拍唱当中,直接一粘贴, ok 了,分号结束,按一个回车, 接着把它缩小一下,把这个 m d 五减切放到这一块,就是这就是他的一个名字,把这里干掉,那现在整个 m d 五的算法就给抠出来了,在这里面来一个 logo 进行一个打印,可以输出看一看我们这个几何是不是一样的,把这个 m d 五拷贝一下粘贴好,包括起来, 那我们输入一个什么密码,当然看我们刚刚这样的一个代码当中啊,这一块传的是什么,所以选择它一下,可以看到是一二三四五六七八,那我把它直接拷贝来到里面,大家一起来粘连好, 点击右键试运行之后,可以看到现在这样的结果就是二五 d 五五开头, a d 结尾,跟刚刚我们里面的这个代码二五 d 五五开头, a d 结尾一模一样, ok, 搞定。 来看一个 i s a 加密登录的网站,扣一扣它这个公开的 j s 代码,这个是一个微流值账号,这个是密码,我们直接把它拷贝一下,看看它是不是用了 i s a 一个加密查找之后,这里有个是 i s s t r 的, 在这里下一个断点,当然我们可以来到当前这个文件,做一个 i s a 的 一个查找好, 它到之后可以看到有这么十九个位置是有的,再往下面走走几个,它也有可能有 password 的, 有 user name, 所以 来个断点,再往后面去走,你看看有没有同时出现在哪个地方,这边不太可能,其他的几乎是没有的,我们看下这个位置有没有 password 跟这个 user name 也是没有的。再 往后面走,这边有没有可能去触发这样的一个断点?先来点登录啊,来到了这个位置,其他的就可以消掉了。 在这个位置之后,我们可以查看一下它里面的一个结果,或者来在下面这里打一个断点,也可以从下面走一个,这个就是 password 的 密码,就是 i s a 加密的它这一块,你每一次啊它都会发生一个变化,你看这是 p 开头 p y s h, 再来触发一次啊,也变化了,所以它的密码和这个 user 俩账号这一块全部是 i s a 的, 我们怎么就扣他一个代码?可以先跳到这个当中去,过来之后也就是加密后的一个字段,是他返回的,所以我们直接可以把它拷贝一下,来到里面,接着直接打印这样的一个 ic 的 一个字母串啊, 粘贴里面来一个密码,我就任意来一段,那再来扣他本身执行的一个代码,可以跳到这个位置再走一遍,走这个位置, ok, 我 把它选择 ic 的 加密位置跳进去, 来到里面之后,他就是执行的这一块,这个注示还是写的蛮清楚的, 下面这块是 u t f 杠八的,所以没什么好说的,直接把它这块进行一个括屏,那我们从这个当中呢,也可以看到是一个 public, public 的 一个 key, 公开的一个密钥的一个字母串, 因为 i c 是 公钥,加密私钥是进行一个解密,私钥放在这个服务器当中,所以我们看不到把它缩小化,缩小化之后呢,还少了这样的一个 j s 的 and craft 这样的一个库,因为这边是 new 了一个,所以我们也需要把这个库给扣进来,这个库就在前面这一块,直接可以进行一 个 copy 当中。整理好,那现在我们就可以直接去运行,看一看它会不会执行出一个结果。运行之后可以看到它这里面是少了一个 navigator 这样的一个环境的,它属于 windows 当中的,属于对浏览器当中的,所以我们应该来到这个最前面补一个环境,少了什么咱们就补一个什么, 来一个 window, 等它进行一个设置,点这个 navigator 给拷贝一下, 拷贝这个就 ok 了,拷贝好之后给他设置一个字典啊,空字典分号结束。现在我们就补了这样的一个环节,接着我们可以点击右键直接就是运行,看看有没有结果,如果有结果就扣成功了, ok, 就是 这样的一段,再试一个,因为他每次加密都会发生一个变化,你看这边就变化了,这个就是 ic 加密的一个网站。

同学们大家好,今天给大家带来一个使用 python 爬虫技术,加上这个 python 的 一个数据格式化工具,来查询这个去年的一年的天气状况。讲之前先说明啊,我们这个程序它需要在 python 的 代码下运行。那首先我们先来看一下啊,这边代码呢,是这样的啊,呐, 里边的话你需要先指定比如说它对应的日期,然后进行抓取,再的话呢,获取这个数据之后保存,保存了一个什么?保存了一个天气数据的 csc 文件当中。好吧,行,我们先来看一下吧。 ok, 这里我选日期是二零二五年的。 ok, 来看一下啊,点击运行。好,这里开始抓了,这里我的话呢是将它设置为无头模式,就是没有界面的模式,所以它会在后台运行,那这边我们等待它抓取完毕即可。好吧,是长沙二零二五年十二个月份的所有的天气 啊,好的,这里我们稍等一下会啊。 好,那么这里的话呢,可以看到,呃,已经抓完了是吧?一共十二个月。 ok, 抓取完毕,抓取完毕之后会在当前路径下生成一个天气数据点, csv 来给我们看一下手机打开啊,这个表格形式的吧, 确定好,那就是这样的一个形式,第一列是日期,第二列是最高气温,第三列是最低气温,第四列是他的一个天气说明,是吧,大概是这样的一个数据。 ok, 那 么拿这个数据之后能干嘛呢?好,接下来我们来做数据的一个分析,这里有三百多条数据啊, 来下一步做数据格式化分析处理。这里我们进入这个代码实现,同样也需要用 python 键啊,这是前提条件,然后呢需要安装一个 python 的 一个库。好,那么这里的话呢,是将它这个数据啊,将那个我们刚刚 得到这个 csv 数据转成一个什么,转成一个格式化的图标,那么这里给大家看下效果来,点击运行走, ok, 运行完毕,然后呢会生成一个这样的 h 码文件,我们直接打点击运行看一下效果, 好,就是一个这样的图标。好吧,那么这个图标有什么用呢?就是它把我们之前所内个一年内的所有天气全部都囤出来了,比如说一月份的时候有多少晴天,有九个晴天是吧? 有七个多云,然后呢,其他都是三个,什么阴呀?这个轻度雾霾,重度雾霾中雨是吧?这是一月份的,然后呢你可以点二月份的,二月份的天气呢?嗯,小雨多一点,三月份的话呢?哇,小雨更多,不是小雨就多云,四月份的话呢,多云多一些,小雨少一些,五月份的话呢? 嗯,怎么都是雨啊?啊,没完了啊,六月份小雨中雨好,七月份啊,小雨多云,八月份啊,多云小雨,只有八天,还好,九月份呢,九月份十二天小雨,十月份, 十月份雨就少了啊,这个基本都是多云,十一月份晴啊,后面这个天气好一些了,对吧?十二月份,十二月份轻度雾霾,行吧,所以从这个里面看的话呢,其实可以看出来就是他的这个 实际情况,就是根据什么?根据我们这个数据来的。 ok, 你 根据数据的话呢,可以显示他每一个月份他的一个差别,那么这就是我们这个数据可策划的一个效果,好吧?你可以根据你所提供的数据来绘图表,那么这样的话呢?就可以看到这个图中的数据信息,他的一个大体的结构是什么样子?

网页一改版,脚本全报废!今天介绍一个 ai 神器,能够让你的爬虫拥有不死之身。坐睡的朋友们都有这种痛,通宵写的爬虫,第二天因为前段改了一个单词名,就全挂这种玻璃性的传统爬虫呢,自然浪费你的生命。可以看一下 screen graph ai, 不 用找档节点,他找的是雨衣,你只要说我要价格,他就像人眼一样去找到价格信息。 我们具体看一下他怎么做的。哪怕网页改版,传统脚本呢,直接报错。而 screen graph ai 呢,能够看懂的新页面,依然抓到了数据,这就是治愈能力。 为什么它能具有能力呢?因为它不光读代码,还用视觉文件去看截图,哪怕 html 混响的厉害,只要是给人看的信息,它都能扒下来使用也比较简单。如果你觉得 a p i 贵了,还可以直接调用本地模型,意味着你可以在你的电脑上免费运行这个地表最小。爬虫呢? 以后的爬虫呢,不是拼手速,而是拼理解力。如果你爷爷的研究爬虫这块算法,可以看这个项目,我是安迪,交流 ai 级虫的自由。

pason 爬虫教程实力篇一点六抓取抖音视频同学们大家好,今天给大家带来一个 python 的 爬虫程序,可以借助这个 python 爬虫代码来抓取抖音视频。那么在讲解这个 python 爬虫程序之前,我们先来弄懂一件事,就是抖音网站内这些视频以及 视频的标题和文字描述是怎么呈现在我们面前的呢?通常在浏览器中,我们想要打开抖音视频,在地址栏里面输入抖音的网址,回车就会跳转到抖音里面,这个时候浏览器会做的就是发起 request 请求给 server 服务器, 服务器接收到请求后就会响应这个请求,把抖音的内容显示在这个页面上,这个过程所需的时间非常短,快到我们几乎察觉不到。 恐龙爬虫的英文是 web crawler, 也称为网页蜘蛛,是一种按照一定规则从网页上获取信息的程序或者脚本。更加通俗来说就是模仿人打开网页浏览网页,以及在浏览过程中发现一些比较有意义的信息,就复制粘贴保存下来的行为。 我们以谷歌浏览器为例,在里面打开抖音视频,可以在搜索栏中查找感兴趣相关的内容,搜索关键词美女,可以看到里面有非常多的视频,我们可以随便点击一个查看, 进去之后发现我喜欢这个视频,我们可以点赞加收藏,也可以把这个视频保存到本地,等到之后有时间再来观看。 这是我们人为保存视频的一系列行为。那么如果是爬虫,他又会如何操作呢?我们可以在浏览器通过关键词搜索感兴趣的话题之后右击点击这个检查, 发现网页中的所有内容都是通过标签代码显示出来的,其实爬虫作为一个简本程序,是分不清页面上的内容什么是标签,什么是中文的,但是能够看懂检查窗口显示出来的标签代码, 我们可以看到页面上的内容都被不同的标签包裹起来,然后我们将鼠标划到视频区域,可以看到显示出 d i v 标签包裹了视频数据, 所以爬虫只需要将 d i v 标签里面保存的视频抓取下来就可以了,得到这样的指令后,爬虫就会去寻找相应的 d i v 标签,把里面的视频抓取下来。爬虫如何在网页中寻找信息的过程,现在我们来看一下代码应该如何写。首先来讲解一下这个程序,逆 行这段代码可以看到只要输入我们需要搜索的关键词,比如说像刚刚一样搜索美女 回车就会慢慢的把美女页面的内容下载下来。好,现在已经结束下载了,我们可以在里面看一下有没有下载成功。点击这个抖音视频 可以看到这里已经下载了一二三四五六七个视频,可以先把这个标题复制一下,看看在页面中是否能够查找到这些内容,使用 ctrl f 查找一下, 可以看到这个视频就在这个首页里面。接下来我们来讲一下关于这个程序,它的作用其实很简单,就是输入一个你想要的关键词,这个功能有点类似于浏览器中进行搜索一样, 比如说你搜索的这个美女,然后就会出现相应的视频数据,对不对?出现这些数据之后,我们想要将大家能够看到的这些视频全部都下载到我们的电脑上,那么你就需要发起请求,我们发起请求使用到了正则表达式, 在这里使用正则表达式筛选他的视频标题名称以及对应的视频链接,筛选完之后再向视频链接 发起请求,最后保存到我们的电脑上,这就是整个发起抖音视频数据的流程,但是这里面还有几个注意事项,第一个注意事项就是我们发起请求时填写的关键词参数,也就是这个 keywords。 在正常情况下,我们输入的关键词和看到的关键词都是中文的,但是他在数据包里面就不一定是中文的,我们在浏览器中看一下,右击检查,点开这个网络,我们先来刷新一下。加载完这些数据之后,我们先来随便复制一个标题, 还在加载中啊,稍等一下。好,我们来粘贴,然后回车查找一下,这就是我们刚刚查找的这个内容。打开这个数据的标头,你可以看到 它的请求网址里面肯定有一个 keywords, 在 这里, keywords 后面接着的并不是一个中文,如果我们使用 keywords 使用的是中文的话,就肯定会报错,所以我们使用到这个 qq 方法来进行转译。 还有一点值得注意的就是我们为什么需要使用上正则表达式来筛选,正常我们获得的数据都是 json 格式的数据,在这里面点开这个响应, 可以看到确实是接收格式的数字,但是抖音它有一个反爬机制,它会在前面出现一些乱码,中间也会出现一些这些乱码,会导致如果我们直接筛选接收格式的数据的话,就会筛选错误,所以我们使用正则表达式来筛选它的标题和链接。 第三个需要注意的就是如果在这个标题中有一些特殊符号是不能作为文件名储存到我们的电脑中的, 在这里使用 replace 方法对它们进行一个替代,将中文的换行符和感叹号还有冒号这些特殊符号置换掉就可以了。这就是我们通过 python 代码来抓取抖音视频的一个案例。

你知道爬虫是什么吗?简单说,爬虫就是一个能帮你自动抓取网页数据的程序,不用你死盯着屏幕,他能切开,他二十四小时不停歇干活。 网页上能看到的文字、图片、音频、视频,只要是公开数据,他都能给你批量捞回来。比如你刷某平台,遇到喜欢的视频却要付费解锁,有人就会动歪心思,用爬虫绕开限制音乐、图片平台的付费资源,也成了某些人爬虫的目标。爬虫啥语言都能写,但拍子上手最快最方便。 不过我必须给你泼盆冷水。别以为技术在手就能为所欲为。绕过付费墙、爬取加密数据、爬取平台未公开的隐私信息,这些全是违法行为。圈内早就有句警示名言,爬虫学得好,橘子进得早。真正的高手都把爬虫用在合法合规的地方。 比如爬取公开的行业资讯做分析,抓取电商公开数据,做市场调研、整理新闻素材,做内容创作,这些才是正途。换做是你要是掌握了爬虫技术,会用它来做什么事?

拍等六十天,从零到精通第一集爬虫原理嗨,你知道什么是爬虫吗? 爬虫其实就是通过程序模拟人类打开网页浏览页面,再将感兴趣的数据提取保存的行为。例如我们打开华为官网,浏览时只关注产品及对应价格,找到目标产品后就会记录下它的名称和售价。那爬虫程序如何复刻这一操作呢? 人类获取网页内容时,会通过浏览器向目标网站服务器发起 s t t p 请求,服务器接收请求后会把网页原始内容响应给浏览器, 浏览器再将这些原始内容渲染成直观美观的页面,这就是人类浏览网页的完整过程。而爬虫程序则是通过代码形式向服务器发送 s k t p 请求,服务器同样会把网页原始内容返回给爬虫,但由于爬虫没有浏览器的渲染功能, 最终得到的就是网页未经美化的原始代码。我们可以在浏览器中查看这份原始代码,右键点击页面选择检查,弹出的窗口中显示的就是整个网页的原始内容。 点击窗口中的箭头图标,将鼠标移动到网页任意元素上,会发现原始代码中对应的位置会同步高亮。 仔细观察会发现每个网页元素都被一对肩括号包裹着,这就是网页标签。网页标签类型多样,不同标签有不同作用,这里我们暂不深入,只需知道 标签包裹的部分就是一个网页元素即可。获取到网页原始内容后,下一步就是筛选有价值的信息。 原始代码中包含大量标签,内容繁杂,就像人类浏览时会过滤无用信息一样, 爬虫也需要精准定位目标。比如我们发现华为官网的产品名称和价格都被 def 标签包裹,且这些 def 标签会通过 class 属性标注特定名称。抓取到筛选后的目标元素后,爬虫程序只需完成最后一步,将提取的内容保存到数据库中。 到这里,爬虫抓取网页数据的完整流程就结束了。相信大家已经对爬虫的工作原理有了初步了解,现在我们来聊聊爬虫的红线。都说爬虫有风险,很多人因此望而却步,但其实只要注意以下几点,就能避免踩坑。 第一,严禁抓取政府机关、国防等相关单位的信息,原因无需多言,若有相关想法,不妨在评论区留言,之后在家静候警察叔叔即可。作为热心市民的我还能领到五十万奖励呢! 第二,不得涉及公民个人信息、商业机密等。如今多数网站需实名制,个人信息已录入,侵犯他人隐私,属于违法行为,切勿尝试。 第三,不能对网站进行破坏。部分人会利用爬虫向抢票类等网站的服务器高频次发起请求,可能导致服务器宕机,影响正常用户使用,由此造成的损失需由行为人承担。有同学好奇能否采集某额某水果平台的 vip 视频, 技术上爬虫可以实现,但我绝不建议大家尝试,感兴趣的同学可查越中华人民共和国刑法第两百八十六条破坏计算机信息系统罪以及侵犯版权相关法律法规。 说到这里,我们已经掌握了爬虫抓取信息的原理,也清楚了爬虫需遵守的原则。下节课我们就来学习如何动手编写一个爬虫程序。

拍丧六十天,从零到精通第二十三天二点七给函数传列表字典时的特殊现象。 ok, 同学们,这节课呢,给大家讲一下啊,这个往函数里面传递列表字典产生的一些特殊现象。那 我这里有一个字典 d, 一个列表啊,那这个然后呢?这个函数里面,对吧?我就把它当做两个参数传进来了啊,一个 excel, 一个 girls, 这个这个参数啊,这个 l 就是 我的曾经的女朋友们, 然后我就抻直追他,把这个这个 d 和 l 都传进去,然后呢?我在这里面干了一件事,把这个看啊 excel, 其实就是这个 d, 看到没有 d 吗? 对不对啊? d, 然后当做第一个参数,就是这个音符,然后我在里面加了一个,把这个好比改掉了,把好比从大保健改成了爱学习,是不是啊?我的爱好,然后把这个 girls 里面,就是这个列表里面 l 里面,对不对?给他加上了一个什么呀? 给他加了一个小云啊,加上一个小云是我的一个新的姑娘,泡泡的姑娘们给掰开可吹呢,还真是卧槽哎,那 大家看,如果是这样的话啊,这个结果会怎样?也就打印出来这个结果会怎样?同志们 啊,打印结果就是说到底能不能改啊,如果按照我们之前上节课写的逻辑的话,也就说在局部变量里面 啊,局部在函数里面是默认不能改外面局变量里的内容的,对吧?但实际上能不能改呢?啊,我既然在这给你讲了,那应该是可能能改,对不对?我们先看一下这个现象啊,就是,呃,给函数啊传递什么列表 的现象啊,列表和字典啊,那我就把这个给它 copy 过来, 大家看啊,咱们直接执行看看加进去了没有?大家看,首先我是不是大宝剑改成了爱学习,然后 这个列表里面又添加了一个小云,这个名字对不对?发现确实是可以改的,那不对啊,不是应,不是说不能改吗?你这怎么又又改又又能改了?这不这不乱了吗?对不对? 哎,这个东西就是说你你你当遇到像列表啊,像字典呀,包括以后你们可能会与学到的什么这个集合呀?啊?什么集合?就是 set 啊,包括一些其他的数据类型,特殊数,它就非字母串的非数字的啊,这种 那属于类型,你会发现他会一到一他他他他就出现这种可以改的情况,那现象是这样,但是我想知道原理是为什么?也就说他为什么是啊,可以改,那首先要先从啊这个,呃,这两个数据类型的这个这个这个这个特点来看起啊,特点看起 就是说,呃,咱们知道如果是一个变量的话,一个变量啊,就普通一个数据库,那就是这是在内存里的话啊? sorry, 在 内存里的话,那可能 可能,呃,比如说这个还是 name 的 一个 h, 对 不对啊?内, sorry, name 的 一个 alex, 那 在内存里它其实 怎么讲?就直接一块内存地址把它存下来就行了,然后这个变量名指向这个内存地址,对不对? 就这么简单,但是呢,你这里就是个字典,这是个字典的话,我告诉你,表面上你以为说啊,那是不是也就是一个 d, 对 吧?也就是一个 d, 然后呢指向一个内存地址,对吧?指向那么一个内存地址,一堆东西就完了啊?这个内存地址是一块就一个内存地址吧,对吧?啊? 存这些值,但实际上不是的,实际上这里面每一组数据都是一个独立的内存地址。那你不相信,你看一下,我们直接呃把这段话给它 copy 到这里来,把这两个都可以 copy 过来,你你看一下就知道了啊。 sorry 好 的好的好的。我把它 copy 过来, 然后我这两个啊,大家看,首先我 id, 我 的这个 d 是 一个,就是这个字典名啊,字典这个整个字典,它是一个内存地址,然后我 id d 里面的一个东西啊,比如说 name, 大家看它是不是一个独立的内存地址,然后再看一下 h 啊它又是一个独立的内存地址,然后再看一下这个 hobby, 哎你会发现它里面每一个都是独立内存地址,包括这个什么呀?包括我这个 l 啊, l 是 一个独立的,然后 l 下面的每一个元素 看到没有,他又是都是,这又是完全不一样的,明白吗?哎,同学们讲说这个怎么去解释啊?我明明想到的,我明明以为没画,我明明以为他是怎么讲?是这个 是就像我们刚才画的,对吧?你这个 d 对 吧?就是一个统一的内存地址, 但是怎么变成了那么多个了呢?这个怎么去解释呢?我给大家举一个例子,哎,大家知道这个这个叫叫什么?叫鱼缸,是不是? 哎?大家看,比如说这是一个方的鱼缸,这个鱼缸里面是不是放很多鱼啊?对吧?放很多小鱼,哎这个鱼很多小鱼。好,那我们这里面的每一个小圆圈小鱼其实就相当于这字典或者列表里的每个元素啊,字典或列表里的这种每个元素,然后这个鱼缸 啊,这个鱼缸他本身是,他是本身有内存地址的,然后里面这个鱼是完全独立的,他是完全独立的, ok 吧?他跟这个鱼缸是两块地址,鱼缸是一个地址,这个鱼是一个地址,他俩都是实体,对不对?他俩都占内存空间,明白意思吧?啊?所以呢?他们怎么讲?就是 你要先理解这个东西之后你,哎,那你就,呃这个,这个就这个明白了啊?这个明白了,那我们再来去讲这个回到还是那个地方,这里有什么不明白的吗? 对吧?每一个鱼是存在的,对吧?啊?是实实在在的物体,然后鱼缸也是个实实在在的物体,不要把它们混在一块啊,只不过是鱼缸里面装的鱼而已。 鱼缸里面装的而鱼而已,你也可以把这个鱼杀死,拿出去放到另外一个地方也都可以,但它是实实在在存在的东西,所以它的内存也单独占空间,而不是像你想的是自控串,因为自控串它本身它只是本身就是一块,它没有 这个字不出来,他就是一个整体,他不是分开的,但是字典和这个里面的元素是分开的,他不是,对吧?他只是一个一个鱼缸把这些东西包起来而已,好吗?理解完了这个之后,那我们回到这个,呃,这个这个地方,也就是说你会发现,哎, 在函数里面他是可以改鱼缸里的这些鱼的,也就是改元素这个字典列表里的这些元素的 啊?那但是,呃,这个这个是可以改的,但是他能不能改鱼缸呢?比如说我直接在这里把这个 d 给它赋值了,把 d 给它,呃,给它改成一个空的,行不行啊?哎,把,对吧?直接在局部变量函数里面改外部全局变量吧,直接改行不行呢?在外面打印 d 啊,你会发现他改不了的啊,就他依然改不了,那这个就是至少这个这个情况是符合我们上节课的现象的,也就是说啊,你,你对吧?你,你没办法改纯音变量,那这个 咱们通过现象先来说,也就说他能改鱼缸,也就说 sorry, sorry, 说错了,也就说他不能改鱼缸的这个啊,这个这个,这个,这个 呃值,对不对?也就是这个鱼缸他是改不动的,但是看到的这个现象是说里面的这些鱼他是可以动的, 对不对?鱼缸不能动啊?这里面的这些鱼是可以动的,没错吧?这是这个现象。好,对,这就是这个把列表字典传进去 的那么一个现象。然后我接下来再说他为什么要这样?为什么说让我改能能动这个鱼,但是不能动这个鱼缸,明白意思吧?你记住啊,他在这里把这个 d 和这个 l 看到没有?给他传到这个函数里,你以为我就,你以你就是,你以为我是说怎么讲? 就就直接 copy 了一份这个字典, copy 了一个列表,把这个对吧直接扔到函数里面,其实并不是,它只是把这个什么呢?把这个鱼缸的内存地址,也就是把这个鱼缸的内存地址扔给了这个函数,然后这个函数相当于就拿到了这个鱼缸的内存地址, 他接下来要改里面的东西的话,就直接通过鱼缸的内存地址去找到了鱼缸,然后到里面去改里面的每条鱼,比如说我把一条鱼拿出来给弄死了,或者把一个鱼干嘛干嘛干嘛,他都是可以的 啊,也就是在函数里面通过这个鱼缸的内存地址找到鱼缸,然后改里面这个鱼。所以就是说其实你把这个字典传给函数, 这个字典本身在内存里没有发生任何变化,他就静止在那个地方没有任何变化,因为他没有任何变化,你只是把这个什么呀,把这个这个这个这个 内存地址扔给他了,扔,扔到这个函数里面了,并没有拷皮一份新的数据, 明白意思吗?他并没有 copy 一 份新的数据。好,这个跟你传一个字母串可不一样。如果你传一个字母串进去,比如说你在这里传了一个说 alex 的 这种字母串,那可不一样了,那就是说他直接是相当于创建了一个字母串在内存里给你扔到这个 里面了,你在里面想对这个字串任何操作都可以,跟外面的那个啊字串都没关系了,明白吗?但是像这种字典啊,列表啊,包括以后学到的集合呀啊这种的话,他只是传内存地址, 传内存地址,然后为什么要这么做啊?为什么不直接拷比一份?大家思考一个,你现在字典里列表里如果有一百万个数据, 一百万个数据啊,那一百万个数据,如果你调用一次,就是往那个函数里传一次,那就是拷贝一百万份,那即便里面每一个 k, 每一个 v 六,对吧?就只有一个字母,一个字母,英文字母也至少占一个字节,对不对啊?那一对,那就是至少两个字节, 那两个字节一个就是两个字节,那两一百万个就是两百万字节。两百万字节是多少啊? 两兆还是二十兆啊?自己换算一下,那至少是两兆。那两兆的空间你看着好像不大,但是你这样其实来回 copy 已经占了,相当于是很很消耗资源的,对吧?我要有一百一千万条呢,那就两百兆,那就慢起来了, 对不对啊?我传进去我只为了调用其中那么一个值,结果把他们两百兆都传到这个字典函数里,这不是多余吗?对不对?这不是多此一举吗? 明白意思吗? ok, 所以 为了这样的一些优化啊,他设计的这种情况,也就是说只把内存地址传进去啊,这些里面的鱼啊, 静止在原地不动的,明白意思吗?好,你们理解这个啊,原理了之后自己可以试一下改一下,好不好? ok 啊,这个原理要理解,后面我们应该可能会遇到类似的这种情况,到时候不要懵逼。

piffin 从入门到精通项目实战篇爬虫逆向密码学第三集砍下密码本的派散代码实现。那我们了解了一些加密解密还有方法,还有基本的一些概念以后呢,那我们也讲到了,其实关于这个加密啊,最先被应用到的领域就是战争,在古代呢, 也是如此啊,别人说大家是否听说过哎。凯萨密码,凯萨密码就是凯萨大地在战争的时候运用的一个加密技术,这是一种最简单且最广为人知的加密技术。凯萨密码呢,是一种替换加密技术,什么叫做替换加密技术呢? 来大家看一下这张表啊,我把它放大一点,这张表,比如说这是 d t, 一下面就是替换后的那个字母,凯萨密码,还有还有摩斯密码,对吧?摩斯密码我没了解过啊。我先讲凯萨密码, 那凯萨密码呢,它其实就是一个替换过程,它其实本质上并不是加密,本质上就是一个替换。如何做替换呢?假设 它们每个字母平移三个单位,就会形成这样一个替换, a 呢,就会变成 d, d 就 会变成 e, c 就 会变成 f, d 就 变成 g, 然后大家往下看啊,往下看这个,嗯, x 就 会变成 z, 那 x, 呃, w 变成 z 啊,那 x 呢?又会回到 a 上面了, a 呢,其实又是第一个字母了,又回到 a 了, y 回到 b, z 回到 c 了,这就是凯撒密码。其实在我们今天看来,感觉这个密码有多难呀,不就做了个平移吗? 没什么安全性可言呀。但是在那个时候,古代那个时候呀,他还真的非常的安全。首先,没有人知道他是这样平移的,没有人知道,其次他们也不知道平移了多少位。 所以在战争时期,凯萨大利发明的这个凯萨密码居然安全性非常高,但在今天,这个安全性就弱爆了啊,哈哈,好,铭文中的所有字母呢,在字母表上向前或者向后,按照一个固定数目进行偏移后,被替换成了密文。 就像我刚才讲的,假设这个偏音量是三的时候, a 就 会变成 d, b 就 会变成 e, 以此类推。这个加密方法是罗马共和国时期凯萨的名字命名的,跟据称当年凯萨曾用此方法与其将军进行联系,就是用的凯萨密码。 ok, 大家看到了,基本上凯萨密码就是这样子去实现的,很简单, 理论很简单啊,看起来这个原理也不难,那我想问一下大家,假设凯萨大帝发了一个指令叫 attack, 就 攻击偷 attack, 但是这个攻这个指令不匀,就算被敌方拦截了,也不能被他翻译出来,那他会加密,加密成了这样的一个 密纹,那对方拦截下来,他也看不懂是什么意思,对吧?但是呢,哎,只要将军知道他是怎么移的,将军拿到这个密纹,我就可以给他还原成铭文,理解我们凯萨达迪到底想进行怎样的行为。那接下来呢,我们就使用我们的 pass 代码实现一下凯萨加密的 整个代码实现。那我们想一想,理论上大家已经知道了,他就是一个替换的过程,但如果要求大家用代码去实现的话,这个代码应该怎么把这个思想体现出来呢? 涉及到代码问题了啊,凯萨就一定是平移三位移四位,五位六位可以啊,一定移多少位都可以。我说了假设是假设是三位,我又没说他一定移三位,我说的是他这个理论,他就是一个 移位的过程。其实也不算真正的密码了啊,应该能设置。对啊,三是我传进去的,我给他传三,他就移三位,我给他传四,他就移四位呗。好,我们用 python 代码来实现一下。首先我写一个命令方法, 这里我先不写代码,这里我要给大家讲解一个类啊,这个呢是 seed, 同学们说,哎,老师,这个 seed 我 知道呀, seed 不 就是字不串吗?对的,这个 seed 类呢,可以帮助我啊,生成一定的 数字字母,哎,字母它可以帮我生成。我先生成一个密码本啊生成一个密码本啊,这个密码本呢?我就叫 generate。 generate 这个单词是生成的意思, generate key 给我生成一个密码本,然后你给我传一个偏移量。 shift 叫偏移量啊, 大家读这个单词的时候,我强调一下,这个单词叫 shift shift, 你 不要给我读成 shit, ok, 不要自作聪明,把 f 给我省掉啊。 f 不 能省,叫 shift。 shift 和 shift 是 两个不同的单词,如果你说成 shift, 那 你就在骂人好吗?不要骂人。哈哈哈,好了啊,不跟你们开玩笑了啊,叫 shift 偏一亮的意思啊, 偏一亮诶,片子写错了, ok, 那 同学们,假设我在调这个方法的时候,比如说我在调 generate key, 给它串一个三,那就意味着我要求的你这个密码本偏一亮,是不是三呀? 就这个意思理解吧。那你最终呢要给我返回一个密码本啊,你要给我返回一个密码本,比如说来个 key 吧,这是一个字典啊,来一个 key。 好, 我这里呢接收一个 key, 然后再把这个 key 打印出来看一下就好了。现在呢,我们来想象一下如何实现这个密码本。 首先这个,嗯,还有一个问题,就是我等会生成了这个密码本以后呢?我要加密,我等会要加密的。那加密的话叫 encryption, 叫映客 rejection, 大家看到吗?我在读,我在写这个单词的时候,其实是先把它读出来才写出来的,我不知道这个单词怎么写的,我强调一下,我知道加密这个单词叫 encryption, 但我并不知道这个单词怎么写的,所以我就只能读英科 reputation。 ok, 写完了,哈哈哈,好了,我写完了啊,把字典传过去,然后把我的指令传过去。假设我等会发一条指令,叫 attack, 叫攻击,叫 attack。 那 你要把这个给我加密,加密成一个密文,密文叫什么呢?密文叫 cipher, 这个单词我是不是刚才介绍过啊?叫 cipher, 叫密文,然后你再把这个密文给我打印出来, 我这里呢还缺少一个缺少一个加密的函数,加密函数叫 inker rep 是, 哈哈哈,是的,你们没看错啊,我写英文单词就是一个一个写的。哈哈,好,我们先来到密码本生成这个问题上啊, 密码本生成的可以这样子生成,首先语句里面有个方法叫做 azk letters, 哎,有同学说 azk letters 是 个什么玩意儿啊?好,我来带你打出来看一下啊,右键运行,大家看, azk letters 就是 这个东西, 首先从这开始, a, b, c, d, 小 写的一直到 z, 然后后面呢?再开始大写的 a, b, c, d, 一 直到 z。 看见没?其实这里有多少个呢?二十六加二十六,应该有五十二个字母。对的,小写的 a to z, 大 写的 a to z, 这就是 s key letters。 s key letters 啊。好,那我再做一件事情,我取后面的二十六个, 看见没?我取后面的二十六个,是不是就取出了大写的 a 到 z 啊?假设我们都用大写的啊,假设你不要纠结我为什么不用小写的,那你喜欢用小写,那你就用小写的,那我假设都用大写的,甚至大家也知道大小写之间是可以统一的,你把大写的全转成小写的,或者你把小写的全部转成大写的,也 ok, 都没问题。 好,那我就拿到大写的 a 到 z 了,这里我就把小写的给删了,我这个 letters 就 等于它。 那我有了大写的 a 到 z, 以后呢?以后呢?我要,哎,同学们,你们,你们想象一下,想象一下,我现在要便利它 for c in ladders。 那 这个 c 是 不是就是大写的 a 到 z 啊? 对吧?这个 c 不 就是大写的 a 到 z 吗?那我现在呢?干一件事,我把 key 放在这,我把 c 放在这里,意味着什么? 意味着什么?是不是就意味着相当于我这里 key 写了一个 key, 这里写了一个 a 啊?写了个大写的 a 啊,它是作为 key 的。 那偏移三位是不是应该对应的谁?就 a 应该对应的 a, b, c, d 是 不是应该对应的 d 啊? a 是 不是就应该对应的 d 啊?看一下我这张表啊, 看这张表是不是 a 就 应该对应的 d 了,偏移了三位嘛,但你不能直接在这里写 d 吧,你要在这里直接给我写个 d, 那 你不是,你不就把所有的值全部变成 d 了吗?那肯定不能这样写,那怎样子才能够把这个 d 取出来呢? 怎样子才能够把这个 d 取出来呢?嗯,我们就要想一想啊,怎么去取这个这个 value 呢?这个 value 应该怎么设置呢?首先它肯定还是在这个 letters 里面去取,但是这应该写哪个下标?这里要写一个下标,但这个下标是几呢? 这个下标应该等于几呢?嗯,这个下标啊,它应该是等于零。哎,我我我不要写零啊,二十六加四。那怎么行啊,你三十这个下标从哪来的呀? 你最大下标可没有三十啊,小兄弟,最大下标二十五啊,里面总共二十六个字母啊。哎,这个你还是要特别注意你的下标问题啊,这个 letters 最大下标就是二十五啊,下标范围吧,下标范围是多少?是零到二十五。你给我冒出一个三十来,那你不就下标越界了吗?所以肯定不对, 想想看,这,这怎么写呀?假设这是零,你,你首先要想 c, 它是个零, c 它肯定是个零,但是你怎么知道它是个零呢?这样子吧,同学们,我这里写一个 index, 这里写一个 innumerate。 好,我这样写,同学们能够看得懂吗?也就说,在这个位置上, index 就是 c 对 应的下标, index 就是 这个 c 字母对应 c 字母对应的下标。呃,我这样写,我不知道你能不能看懂啊,但如果你看不懂的话,还有一个办法,你这样子,你把 index 跟那个 c 打印出来看一看, 逆行一下,看到了吧?看到零 a 一 b 三 c, 呃,二 c 三 d, 我 的思路还在切片那里。对,现在要回到下标这里,要跟着我的思路走,也就是说你现在这个 a, 这个 k 应该对应的三下标的 d, 应该对应的三下标的 d, 那 也就是说你这个地方一定要取出一个三来,但是,别,别说但是了,我来告诉你怎么取吧, index 加 shift, index 加 shift, 哎,同学们,写完了, index 加 shift 就 就是三, shift 是 不是三呀?它告诉我偏移三位,那现在第一个 index 是 不是零呀?零加三是不是就三呀?那零加三对应的三是不是就是 d 啊? 是不是就是 d 啊?那也就是说我这个地方这样子写是不是就对了呀?我这个地方怎么写呢? letters, 注意看啊, letters 下标就是 index 加 shift, 是 不是就对了,对不对? 我有没有写错呀?哈哈哈,我告诉你,哎,不对,为什么呢?你光看了前几个是对的,但你往下看,你往下看二十五呢? 对啊,最后三个呢?那我们先看二十三,那如果是二十三的话, index 加三就变成二十六了,二十六它就不存在这个下标呀,那这个地方就得下标越界。哎,那问题又来了,那我二十三应该对应谁啊? 二十三应该对应的是 a 吧,你看 x 是 吧? x 它是不是对应的是 a 呀?嗯, a 这个下标是几啊? o 是 零啊?对, a 对 应的下标是零呀?对,也就说,也就是说在这个位置上,一旦下标变成二十三的时候啊,就特别注意啊,特别注意。下标二十三的时候,我要给它对应到零上去,也就说现在这里是二十三,这里是二十 三。同学们, index 二十三啊,那 index 是 二十三,二十三加上三, 那就变成二十六了,那二十六我得把它对应到零上去。二十五是 z 嘛?二十六就得是 a, 那 二十六就得变成零,同学们,怎么把它变成零?看到,你看看这样行不行? 最后三个手动设置,哈哈哈,也行,也没有说不行啊,肯定也行,但是那样子不好看。我的看我们的写法啊,你看一下,这就形成了一个正确的写法,你这是二十三,二十六,余上二十六就是零, 不是除啊,你二十六除二十六,那就变成一了。谁告诉你是除是余,取余二十六,余二十六他就是个零。那我们再往下看,如果你是二十四呢?二十四变成加三变成二十七,二十七余上二十六,那就是一,那也就说 y 它对应的是谁呢? y 对 应的应该是 b, 对吧?然后二十五,二十五加三就是二十八,二十八以上,二十六就是二,那也就说 z 对 应的应该就是 c。 搞定了,已经搞定了,就是这么写的。写完以后,同学们这里直接返回这个 key, 我 们看一下这个 key 是 不是正确的,我把这里删掉了啊, 返回密码本 来看一下对不对啊? a 对 应的是 d, b 对 应的是 e, 这是移三位啊,移三位的结果。我们看最后三位吧,看最后三位, 最后三位是 s 对 应的是 a, y 对 应的是 b, z 对 应的是 c。 其实这就是那个凯撒移三位以后的密码本。 那有同学说,我不移三位,你不移三位,你改一下这里就可以了。好吧,随便改,那手动设置这里就麻烦了,这里一改,你那边是不是也得改呀?但我们这样写就不用改了,这比较通用,所以我们选择用这种方法。那关于这个密码本生成啊,大家能否看懂这一段代码呀?我经过这样的讲解,同学们应该能够看懂了,对吧?这就是密码本的一个生成方式, 那么下次再见了。

pason 爬虫从零开始学第三期出示 requests, 不 对呀,这个时候应该有掌声啊, 好,同学们好,我是马可。在上一小段中,我们讲解了利用 request 请求去发送了一个小小的请求,然后获取到了网页上面那个图片。那这节课呢,要给大家详细去讲一下 request 它一个各项方面的一些参数,那回到我们这里 来,这里大家注意它的参数是非常多的,那在这里我们这里列出一些常用的。首先是我们熟知的请求方法,按照我所说的 get 跟什么 跟这个 post 这两个请求方法,重点是我们要看一下它的常用参数来。首先第一个这个参数它是做什么操作?大家在看我们刚才的案例代码的时候,有没有发现一个问题,我们这个代码 除了这里之后来看开看好了,来在这里做问号之后有一段很长的东西对不对?他们用这个不知道是什么东西的符号在拼接是吧? w 等于多少? h 等于多少? c 等于多少? r 等于多少,那他们是什么东西?大家可以理解为它就是查询的参数, 你可以用两种方法来把这个参数携带,第一个是利用来这个参数进行携带,第二个是直接写在 url 的 链接后面,那后面还有一个叫做表单数据的东西, 它是提交保表单或者说普通见值率数据的时候,它使用的是 pos 的, 你可以写一个 date, 以见值率的形式去进行提交,那这个时候就是我们之前所说的账户或者密码来进行操作的。 举个例子,账户或者密码来进行提交的时候就会用这样的方式来进行,那还有一种数据啊,他可能说你在进行请求的时候,你是要去给人家发数据,但是注意 你这里去进行请求的时候,他要要求你必须用的是 jason 的 数据发送给他,这个时候你必须要写 jason 等于多少。 这里有个问题,大家千万不要手动地去写,比如说你写个 date, 自己去把它做一个 json 系列化的操作,不要这样去写,因为这样会导致它不会带这个设置请求请求头,它的 content type 它是不会给你设置的。当你使用 jason 或者说 date 直接去使用的时候, 它会给你设置对应的请求头,它会默认做这样一个操作,所以说跟你直接去手动地去传递还是有很大区别的,这一点需要大家注意, 也就是我们的 headless 请求头了,请求头就是我们前面所说的那些来证明你身份的东西,比如说 u a, 比如说 cooking, 比如说 talking 等等内容, 那这个东西一般来说是必须要带的啊,至少你要带一个 u a 的, 好吧,那在这里我们这个图片它没有这些限制,我们就不带了,后续我们会经常见到它,也经常使用它,所以大家也不用担心。现在我们要先了解一下,再往下走,是一个叫做 cooking 的 东西。 那首先 cooking 是 什么东西?大家可以简单理解为 cooking 是 你的令牌,当你现在进入一个城市或者进入一个地方的时候,一个新的地方,我们拿在古代来说,你必须要有一个证明你自己身份的东西,对不对? 你是哪里人啊?你今年多大?你祖籍哪里的?等等等等,反正诸如此类的问题,那 cooking 其实就代表了你的一个身份信息。那我们如果说去反问一个数据的时候, 或者说访问一个网页的时候,我们常规情况下有两种状态,大家想一下。第一个状态叫做游客状态,我没有登录,没有注册,我作为一个游客来到这个网页,我去访问他们那些东西。 好,第二个状态是登录用户的状态,我是这个网站的用户,我有他的账号,有他的密码,我会登录这个网页去访问那东西。那大家发现了吗?很多网页你在游客状态下浏览一些东西是浏览不全的, 或者说有些东西他会说请登录后查看,肯定见过。那好,如何保存?或者如何叫验?你的登录状态?我如何判断你是一个用户,或者说你是一个游客,就是我们的 cooking, 你 可以携带这个 cooking 来手动定义一个 cooking 参数,在 get 或者 pos 的 时候去携带它,也可以通过 session 来进行自动管理的 cooking, 那 这个 session 后面我会详细的去讲它。 所以大家知道 cooking 它的作用是什么?是保证我们登录的一个状态。我说如果一个接口,一个网页,他要看你登不登录,你得用 cooking 告诉他我是登录的还是未登录的。 那这个东西如果再往下走有个 timeout, 他 是干什么呢?他是超时时间,什么意思?比如说你现在反问一个网页,这个网页等了十秒了,他还是没有给你响应,但是他也没报错, 你能忍吗?说,老师,我能忍,我多等等,我今天有空,这不是你有没有空的问题,注意,这不是你有没有空的问题,你一个网页你等十秒,一百个网页你能等的下去吗?所以说你会指定一个超时时间,如果五秒钟之内, 三秒钟之内,多少秒之内,他没有对你的请求做出一个对应的响应,好,我会报错,他会告诉你连接超时,或者说请求超时了,进行一个报错, 再往下看,那代理是什么东西?我们去进行请求的时候用的是本级的 ip, 但是大家想一下,一个用户会频繁的反问网页吗?有同学跳出来说了,老师,我会 有一个网页,我是他的重度狂热爱好者,我每天起码刷八个小时的视频,或者我要每天起码刷八个小时的帖子, 我狂热,好,你重度狂热,你能做到一秒钟,或者说你能做到一分钟?反问翻页几百次吗?你能做的到吗?你做不到吧,对不对?这一看,不对,这不是超人,要不是超人,要不不是人,是不是?对不对?人家一看,要不你是超人,要不你不是人。 所以说那我们肯定会要进行一个分流的一个政策。什么意思?大家如果把一个 ip 理解为一个用户的话,那多个 ip 其实是不同的用户在访问不同的页面,大家这么简单去理解就可以了,所以说使用代理是非常有必要的, 那如何使用代理呢?来,我们也可以定义一个代理的参数,直接在 get 或者说 pos 的 时候去指定这个东西就 ok 了,这是一个简单的用法,后面我们还会去详细的去讲代理池之类的东西。好吧, 非常的 ok, 我 们先简单了解,我再往下讲。还有一个叫做证书验证,那这个证书验证又是个什么东西?大家可以简单理解为我们前面说过, https 去请求的时候,它会在进行这个请求的时候,它会验证双方的身份, 记得吗?验证双方的身份,你是谁?你是不是跟我对接的街头人?还记得这个事情吗?大家可以理解为这个 s l s s l 证书就是来验证网店身份跟用户身份的,你可以这么理解,那双方验证双方身份的,你把它禁止说我不做这个验证了,我不做这个验证了。 好吧,是这个意思,这是我们请求的时候可以携带的一些内容。那继续往下走,还有一些我们响应里面常有的一些属性,有哪些属性?状态码,那这里要详细跟他说一下,状态码里面就是我们之前所说的二百四零四啊五百,以及他们所对应的一些原因。这个大家知道 第二个叫做点 text, 它是干什么呢?它其实就是一个网页的文本内容,你可以理解为字母串的格式,它会自动解码。什么意思?假设说你的网页它是一个文本,传过来之后它会自动把这个东西 解码成字母串,然后同时它会自动选一个解码格式。所以说你直接用点 text, 它有时候是可能会导致乱码的。注意,它有时候是会导致乱码的。那第二种点 content, 它是原始而今的内容,你也可以用 content 自己去进行一个解码,或者说一个操作, 你指定 u t f 杠八,最后也可以得到这个对应它的一个字母串,也是 ok 的。 但是一般情况下我们去获取一些图片或者文件的时候,也会使用这个点看成的,因为本身它就是一个二阶式原始二阶式内容。 那第三个是点 jason, 它是解析 jason 响应,再往下看还有点 h 的是点 cooking, 点 url, 它们分别代表的是响应头响应的 cooking 以及最终访问的 url。 那这里的最终返回问 url 重点是什么呢?你反问一个 url, 最终它不一定是你目前的这个地址网页,因为它可能会从定向到另一个网页,那这个点 url 返回的就是你从定向之后的 url, 而不是你一开始请求的那一个。这个大家需要注意 点 cooking 是 响应的 cooking, 注意响应的 cooking 是 服务器返回给我们的,不是我们前面说到携带过去的 cooking。 点 head 响应头,也就是我们在开发者工具里面看到的请求标头跟响应标头这两部分的内容。 那在这里呢,也是我们这个响应他的一些常见的属性跟内容。那大家可以去做一个操作,就说你完全可以用我们刚才所爬图片的案例 对这些参数去一一进行添加和尝试,来看一下它所达到的一个效果是不是这样的,大家可以去尝试。当然对于一些参数这个接口本身是不存在的,那你就无法去使用了,好吧,你可以去多打印一下这些响应的内容,这些对象,去看一下 他们的一个对内容到底是什么样的一个情况。好,那这节课我们简单的去了解一下,或说我们更详细的去了解了一下 request 它的一些模块的属性,或者说对象里面的一些方法,那这节课的内容就到此结束,希望大家喜欢。

从零开始学 python 四、 python 输出语句这讲我们讲解 print 函数, print 函数的功能是把信息打印到屏幕上,也就是打印到控制台啊。首先呢,我们讲一下 print 的 基础语法 啊, print 括号啊,里面是显示的内容。 好,那接下来呢,我们看一下具体的代码示意 我们 print 括号英文状元的括号,双引号,打印一个字母串啊,李云龙说打得赢,全体都有准备进攻,然后我们点右键运行代码,这个时候我们发现这个文本就会被我们打印到控制台 啊,那我们这地方呢,插入一条,当控制台被关掉之后,我们的控制台在哪里打开呢啊?在 view 啊, to window 这上有个 to window, 打开就是这个控制台,我们点右键运行可以出来啊,当然你把它关掉以后,你右键运行它也会出来啊,是这样的啊,所以说控制台在哪里打开,我们简单说明一下。好, 这就是 print 函数的基本功能啊,那我们知道 print 函数呢,在打印的时候,我们还还会跟变量一起去混合使用啊,目前打的都是字母串啊,比如像我们这地方加入一个变量 a, 等于四十,然后我们这时候打印 print f 加引号 年龄,是啊,后面加上一个中文英文状态下的大括号,那这个时候呢,我们可以发现呢,它结果就是玲珑的年龄是四十 啊,在这个答疑语当中呢啊,他其实包括两部分,第一部分利用了的年龄是是一个文本,后面这个 edge 是 一个变量,那如果要想输出这个 edge, 主要有两大关节,第一个关节 啊,是大家注意前面那个 f 啊,第二个关节 啊,是英文状态下的这个大括号啊,我会讲到呢,这两个是缺一不可的啊,大括号内部的是放入变量 啊,它会把它变量中的值放在里面去显示,但是前面一定要加 f 啊,当然呢,它可以有多个大括号啊,比如像我们这地方还有一个它的身高, 那我们可以加上逗号啊,它的 身高是那再加上一个英文状态,要打括号里面加上 hi 啊,你可以说后面再加上一个 me, 这个后面 hi 后面加上一个 sir, 那我们运行看到四十岁身高一点七五米啊,这个呢是我们叫格式化输出,非常的好用啊,当我们把文本和变量混合使用的时候,它就是 这样子用这种格式来书写啊。那当然呢,我们有个小技巧,比如像我想在他们两个之间空一行,那你会发现虽然他们两个代码距离很远,但是在输出的时候啊,它是中间是没有空行的,你空行的话,你就直接加上一个 print 啊,什么都不输,那他就说明我输出完语句以后我就要换行,那这行呢?我什么都没有输出,然后我就换一行,那结果得到的结论就中间空一行, 你不要认为是他输出了一个空行,不是的,每个 print 函数他输出以后都会换行,但是那这行他什么都没有,他直接换行了,所以我们这一讲,我们就讲到此。

hevin 从入门到精通项目实战篇爬虫逆向密码学第一集密码学的基本概念接下来我们要讲解的是密码学,那有同学说,哎,我们学习爬虫为什么要学习密码学呀? 这里呢,我就要跟大家说一下,大家知道我们在写程序的时候,你有没有发现我们啊,是需要发请求的,而且呢,我们发请求的时候呢,有的时候是需要传餐的,尤其是 pos 的 请求,你如果去发送一个 pos 的 请求,那他可能会要求你传各种各样的数据。而 所谓的爬虫当中的一种逆向啊,他就是在请求参数上给你加密了,嗯,也就说这个参数呢,他不是明文的,他是一个密文的参数,而这个密文的参数当中呢,有一些他特有的数据。注意听啊,是这个请求他特有的数据, 你只有带着他的数据把请求发到服务端,服务端才会给你返回真实的数据。而在这种情况下,那个参数呢,我们往往又是看不懂的,因为他进行了处理,进行了加密,你看到就是一堆密文。 如果你是零基础,并对 python 感兴趣,我把多年学习 python 的 经验都整理好了,从小白到大神的全流程,按照小学生都能学会的认知水平拆解,记得在粉丝群拿哦。还有一种情况就是你的请求发出去以后,他回来那个响应里面你读取到的,假设你读取到了,然后你再抵扣了以后啊,你拿到那个文本呢,你也看不懂,为什么 他也是个密文数据,那这个密文数据呢,也要进行解密,才能够真实的看出来他是什么东西啊?那说白了,其实他怎么做的呢?这中间的技术呢?就被称为我们的现代密码学。我们先来了解一些基本的概念,讲到密码呢,大家对这个概念应该是非常清楚的, 但是不知道大家是否明白啊?密码具体是什么内涵,以及密码到底有什么作用呢?还有我们如何来判断一个密码到底是好还是不好呢?在我们谈论密码之前呢,我首先问大家一个问题,二十世纪最伟大的发明是什么? 嗯,你们的答案是什么?在二十世纪的时候,我们最伟大的发明是什么?哈?计算机。对的,相信大部分的同学回答都是计算机,是的,的的确确就是计算机。 正是由于计算机的发展,使得我们现在的社会啊,步入了信息社会。大家看一下 农业社会到工业社会,再到后来的以及现在的信息社会啊,我们,呃,这里写的是二十世纪,对吧?其实十九世纪,我刚才问的是二十世纪,哎,我刚才问的就是二十世纪,对吧?好,嗯,所以十六世纪的时候是机械化,十八世纪进入了自动化,二十世纪呢,迈入了信息化,我们现在呢是二十一世纪了。嗯, 当然,现在还没有到二零三零年,那信息技术在生产、科研、教育、医疗保健、企业和政府管理以及家庭中的广泛应用,对经济和社会发展产生了巨大而深刻的影响,引起了人们生活生产方式、生活方式和思想观念的巨大变化,极大的推动着人类社会的发展和文明的进步。 哎呀,这个信息他的信息化的一个社会呢?嗯,有人就说过,在历史上啊,从来没有哪像发明这样彻头彻尾,然后呢,彻里彻外的影响着我们生活的方方面面,他在哪些方面对我们造成了影响? 人的社会生产活动已从物理世界延伸到了网络世界,同时网络世界的事物呢,也深刻的影响着物理世界。 其实就是一个虚拟世界跟一个现实世界嘛,对吧,两者相互影响,高效实现了人、机、物三元世界中的社会资源、信息资源、物理资源的深度融合和综合利用,提供普惠社会的智能服务,已成为社会发展的一个趋势,也就意味着我们可以将人物整个虚拟世界全部连接在一起啊。 但是呢,人们在享受信息社会的同时呀,在享受这些便利的同时呢,也面临着信息巨大的风险和隐患,大家知道是什么吗? 信息安全大家可能都听说过对不对?但是信息安全具体的内涵是什么,大家可能并不太清楚,其实它主要有三个要素。第一个信息安全呢,机密性, 就怎么保护一些信息不让别人知道,小的可以是,呃,是你的私人日记、信用卡信息,银行密码,大的可以是政治、军事或者外交机密,如导弹的部署等,这叫机密性。 其次,完整性,消息的接收的能够验证消息在传送过程中没有被修改或者被替换,完整性保证了发送方发送的消息和接收方接收的消息它是一致的。 第三个叫鉴别性,就验证,包括身份认证和数据源认证,用于确定人计算机和文件的真实身份,以防假冒、替换和否认。 那在解决这些信息安全问题的同时啊,可能会有很多技术啊,但是我们说,但是密码学是解决信息安全问题最有效、最可靠、最经济的核心技术, 对不对啊?那在密码学当中它就有很多的分支,比如说加密技术,那有加密技术就有解密技术,它俩一个类似,一个矛一个盾,对吧?然后密码学可以完成一个数字签名的 鉴别啊,数字签名可以鉴别它叫什么性呢?叫鉴别性,那访问控制可以完成完整性的验证,也可以完成认证与授权等等,这就是密码学相关设计的分支。有很多啊, 但大家最经常听的可能就是加密和解密,对吧?加密和解密但在生活广泛当中运用的话,有什么数字签名啊,访问控制啊,完整完整验证啊,认证授权的啊,都都是密码学相关的范畴。到底什么是密码学啊? 首先大家要理解一下密码学,他不等于我们银行取钱用的那个密码,你银行取钱用的密码,那是你的密码,但是密码学指的不是那个密码。再来说密码学,他也不是指计算机或者手机登录用的密码,不是取钱密码,不是手机和的或者电脑登录的密码。 那什么叫密码学?嘿,有个学密码学是研究保密通信的一门科学,研究在不安全的环境中,前提啊是在不安全的环境中,如何把所要传输的信息在发给接收的之前进行秘密转换,以防止第三者对信息的窃取。 首先你的环境是不安全的,说白了我们在网络上传输的任何信息其实都是不安全的,因为在任何一个环节都可能会被别人窃听。那如何在这个不安全的环境中实现我们信息传送的安全性?这是一门通保密通信的一门科学, 理解了吧?这叫密码学啊,其实我们可以想象一下,关于这个密码呢,有点类似于黑社会的黑话,也就说如果你是道上的人,他们说话呢?你能听得懂,对吧?我会中间人攻击你能,你能听得懂,对吧?但是如果你不是道上人,你可能就听不懂 道上有道上的话,然后呢?比如说密电吗?然后福摩福尔摩斯探案的时候,里面有很多很多也是跟密码相关的一些知识啊。那关于这个问题呢?在军事上,其实密码学呀,它的应用最广的领域,都说 最前沿的领域呢,其实是军事,是战争,从古代到现在,包括一战、二战运用到了大量的密码,对吧?军事指令传递都是用密码去传递的。那古代的时候大家看一下这张图片啊,这是一,这是一张牛皮,对吧?上面有很多字母。然后呢,他在写这个密码之前呢,他是先绑定到了这样的一个 特定形状的木条上面啊,木棍上面,那我把密码写上,写完以后呢,再把这个木棍拿走,然后直接把这个,把这个信息用牛皮来进行传送,那当对方拿到这个皮的时候,他只要没有这指定的这个这个形状木棍,他是没有办法理解 到底是什么意思的,只有把它绑上去才能够还原这个信息,其实这也是一种密,古代战争的一个密码传递方式, 我们每个人可能在日常生活当中都尝试过用一些符号来代替某个你不想让别人知道的人或事,对吧?同学们有没有哎类似的小经验对吧?都有的,生活当中都有,所以啊,其实这就是密码学的一个最基本概念。讲到这呢,大家其实要明白,密码学它是一个 学科,一门科学,它是研究不安全环境当中保证信息传递的安全性的一门科学。好,那关于我们的一个密码学的小小基本概念先给大家说明到这里,那么下次再见了。

什么是对称加密?什么是非对称加密?五分钟秒懂加密技术加密。首先我们来看一下对称加密,它的整个使用流程是由后端先去生成一个密钥,然后发送给前端,此时黑客他截取到了这个密钥,然后前端呢通过这个密钥来生成密文,再发送给了后端, 这个时候黑客他拦截到了这个请求,就可以去对这个密文来做破解,数据又遭到了泄露。所以你会发现对称加密呢,它是前端和后端用的同一个密钥来进行的加解密,黑客他是可以去轻松破解的。常用的对称加密算法呢,有 aes, 但是这个加密算法呢?我不在这里去做细讲 什么是 aes? 你 可以把它简单的理解为在打仗的时候发报源,他要去向总部发送消息,比如说发的是这个 hello, 那么他把每个字母都往后面去推一位,就可以进行非常快速的加密。但是如果说一旦有内鬼,他透露了这样的一种加密算法,敌方是可以很快就进行破解的,他只需要去将加密的密文偏一辆减一,就可以去逆向破解了。所以他的一个安全性的问题是非常大的。 非对称加密。通过非对称加密,即使你黑客拿到了这把密钥,你也无法去破解非对称加密的这种算法,它会生成两把密钥,一把公钥,一把私钥。公钥你可以理解为是一个信箱,大家都可以去投递信件,但是你不能打开,只有邮递员这个私钥才能去进行打开,从而去获取到信件。 但是这种方式他的一个性能会比较慢,因为他需要去通过公钥呢来去生成一个无法破解的密文,所以这里涉及到的性能就会比较慢。 我们同样也结合着整个程序的使用流程来看一下,由后端呢去生成公钥和私钥,然后把公钥呢给到前端,前端对这个数据进行加密,把密文给到后端,后端能通过私钥来进行解密, 即使黑客他获取到了公钥,他也无法破解。那么常用的非对称加密算法呢?有 rsa 这种加密算法,他为什么无法破解通过公钥加密之后的密文呢?我这里去举个简单的例子,比如说后端他发送给前端的这个公钥是取模五这样的一个加密算法, 比如说是二十二,然后前端对加密之后的密文,假设说啊是取模等于四, 所以此时前端发送给后端的这个数据就是四,那么黑客他有的信息就是取模五以及这个密文四,他想要通过密文以及公钥来进行反推,能反推回来吗? 是推不回来的。你要知道取模五等于四,它的数字是非常多的,更别说 rsa 这种公钥,它是由六百位的天文数字来组成的, 所以黑客他想要去破解到呢?即使你现在用最好的计算机,你用上亿年也跑不出来。所以即使黑客他想要用暴力破解的方式,他也是无法破解的。那你只需要知道非对称加密,黑客他是无法破解密文的,只能通过私钥才能进行打开。 所以你会发现非对称加密,它是由公要来进行加密,由私要来解密的,是不是就非对称了?当然它还有一个问题我们需要去解决,也就是它的一个性能比较慢,在前端它通过公要和数据进行加密之后,由于它这个算法比较耗费性能, 所以你的数据越大,它整个的一个加密过程也就越久。所以我们在实战当中呢,通常会用到混合加密的方式, 混合加密,那么混合加密它同样的它会生成公钥以及私钥,把公钥呢发送给前端,但它加密的就不再是数据了,而是一个特别简短的字串,你可以把它简单理解为,比如说它就只是去加密青木的这样的一个字串, 那么青木这个字串呢,肯定是跟后端去约定好了的,因为你加密数据会比较慢嘛,特别是数据量比较大的时候,比如说这里传一个两张的图片,那么它加密过程就会比较慢, 我就不去加密你这个数据了,我只去加密一个简单的这个串,这样的话黑客他就无法去破解青木的这个这个串,因为我是通过非对称加密来去加密的,然后将加密之后的公钥,也就是无法破解的这个青木的这个串,再去结合着这个数据 做一次对称加密。对称加密呢,它的算法是比较快的,我们之前就说过,所以你会发现啊,前端它既用到了斐度乘,也用到了对称加密。斐度乘呢,它是加密的一个非常简单的函数串,比如说青木此时再用对称加密去加密数据, 最后呢把这个密文返回到后端去,那么黑客他拿到了这样的一个密文,他想要去破解你的这个加密算法,就必须要去破解青木的这个支付串,而这个支付串呢是通过非对称加密,这样的一个算法他是无法破解的,他是拿不到的, 就通过后端去用这个私钥才能去解开这个支付串,再来去通过这个青木的支付串呢,去对数据进行一个简单的对称加密的数据解密,就可以去拿到最终的一个数据了。 小杰最后再给大家总结一下,对称加密呢,它是前后端使用的同一个密钥进行的加解密,优点呢是速度比较快,缺点呢是密钥传输不安全,容易被窃取。 非对称加密呢,它是前后端使用不同的密钥,公钥加密,私钥解密,优点呢是安全,因为它私钥是不传输的。缺点呢是速度比较慢。混合加密呢,它是结合着两者 使用 rsa 算法来去加密 aes 的 密钥,使用 aes 去加密数据,保障性能与安全。那么今天就给大家分享到这里了,拜拜。

今天带来的是用拍摄实现音乐自由,当你刷到我这条视频,我想你又捡到了大漏。今天分享的这一份代码 即可让你轻松实现听歌自由,接下来我就教你如何操作。首先我会把这份代码分享给屏幕前,有需要的,你拿到代码后,右键运行代码,它就会打开这个窗口。 在这我们先输入一位歌手,今天就把他的歌曲全部抓进来,直接点击这个搜索按钮,歌曲就会全部展示出来。我们先下载几首好听的歌曲,看看待会能不能正常播放,下载好后就会保存到文件夹,现在我们就点击一首播放, 我们再来听另外一首, 可以看到歌曲都能正常播放,并且也非常的流畅,简直不要太爽了, nice。

哎,前端网页当中存在这种无法看懂的混淆,我们做爬虫类向的时候应该怎么去解决呢?今天就带大家来去实战学习一下,牛逼。 我们来看一下这个网站,首先右键去选择检查,他会打开开发者工具,打开之后呢进入到网络面板当中,我们来去刷新一下页面,让他去加载数据包, 等待数据加载出来,可以去搜索一下数据,在哪个数据包当中,可以在这里来搜一下啊,如果说没有这个搜索框呢,可以在这里去选择这个放大镜的图标,或者说你按住 ctrl 加 f 也能打开这个搜索框搜索发现它在这里呢,有很多数据包都出现的这样的一个数据,我们来看一下上面的都是 g s, 先跳过一下,看一下非 g s 的 这个数据包, 这个数据包里面呢就包含了这一条数据里面的全部内容嘛,包括其他的数据呢?是另外的啊,这些东西, 那整个数据包里面呢,它有二千九百一十五条数据,还是蛮多的,所以我们要去请求这个数据包,但请求这个数据包呢就要去考虑到它的一些参数是否有加密,而这个数据包里面呢会有一个叫做请求头啊,这个请求头参数里面呢有一个这个 a, c, c, e, p, t 啊, e, n, c k 这样的一个参数,它是加密的, 我们来去测试一下,如果说不带这个参数,它是拿不到数据的,右键去运行,它会说未经授权的访问,那如果说我们给它带上之后呢,带上之后把这个值拿过来, 而且这个值它是会变化的,比如说我刚刚是 d n 开头的,现在它就是变成了啊 k 九开头了,它是有时效性的嘛,来右键去运行看一下, 就能够去得到正确的一个数据了,那就是说这个参数它是必要的,且它是需要去逆向的,那么就要去找到这个参数,它的生成位置可以通过搜索的形式来去搜, ctrl f 加 f, 弹出下面的搜索框来搜一下。这个地方呢,会有很多赋值的地方啊,来看一下, 比如说这里第一处他这个地方呢是赋值的,然后上面的话有一个幺零九九,而我们的路径什么呢?我们的路径是幺零 零七,路径并不一样。再再来看下其他的啊,其他的幺幺零零,那也不一样,那这里他既然有这么多赋值的话,你要么啊就去一个个下段,你看他到底是在哪个地方去做的一个段注,那要么你就干嘛呢?去搜什么?搜这里的一个路径,他这里竟然会包含这个路径,我们就给他搜这个路径, 搜一下,好,搜索路径就只有一个来点,进来之后发现啊,他在这里面也会有一个负值的地方,给他下个断点,向上断点之后我们再去选择一个其他的日期搜索一下,哎,断住了,断住了之后,那么这个值就是他的密文值,但是你悬浮上去之后,他是跳不过去的, 那这个时候怎么办呢?我们就需要去给他选择进入下一个函数调用啊,通过这样的一个选项,好就进到这里面来了,进到这里面来之后, 哎,你看他整个的一个代码就做了一些处理嘛,混淆嘛,你去通过肉眼来看,肯定是不那么好看了,那这里的话呢,我们来看一下他在这个地方呢是一些素组啊,用的是素组混淆,那这里面呢又放的是什么?下环线零 x 中的是十六静止的,十六静止的一个混淆方式呢?是 ob 混淆, 这个地方是一个非常典型的 o b 混淆,所以我们这里可以通过一些工具来去给它解混淆一下, ctrl 加 a 全选, ctrl 加 c 复制,然后比如进入到这样的一个在线工具当中,粘贴那个代码过来,然后去给它反混淆一下,等待一下,它这里是需要一点时间的 好就得到了对应的这样的一个解混淆之后的数据。我们来看啊,它整个的一个区别还是挺大的 好,虽然说这个地方呢,并没有把这些比如说什么变量名啊,函数名都给它解出来,但是它整个的一个观感上来说还是要好很多的。那我们来看一下这个地方, 这里的话呢,它是 get r e s code 的 这样的一个关键词,我们来搜一下它在什么地方, ctrl 加,这里也有 ctrl 加 f 啊, ctrl 加 f 来搜索好搜到这个位置。它这里呢是一个函数,然后有一个 a e s 点 encrypt, 一个非常典型的 a e s 加密嘛, i v 值偏一亮,然后 mod 是 它的一个模式,这个是它的填充方式, 那整个来说的话,它这里呢就是给它 return 呢,这样一个值就是密文值了啊,所以它这个地方就是什么呢?就是一个 a e s 加密啊,应该用的是什么应,应该用的是那个 c r p 六 g s, 所以 我们就可以直接把这个函数给它拿到啊,这个点 b 的, 点 b 的 可以不要了, 然后放到本地 g s 文件当中,比如给他来个函数名称吧, get enc, 好, 那么这里的话,它这个一般来说是通过 c, r i, p o, g s 来去点一些什么 enc, mod, pad 这样的一些东西的,所以我们这里可以把它给它定义成什么呢? c r i p o g s 来导入一下模块嘛?等于 r e q u i r e 导入这个 c y p d s 模块,然后来去调用一下这个函数,接收它的返回值,右键去运行 好,这里报错了,报错是说这样的一个东西是没有定义的,那么它是环境啊,我们来看一下这个地方的话,它在这里是什么东西? 好,可以去右键复制一下它的一个对象,再回到这里来补一下就好了嘛。好,这地方给它补一下。 它这里的话呢,应该是说里面有什么东西是缺失的,我们先跑一下吧,先不管它什么缺失,先让它报错,报出来。在这里的时候它就说啊, get item 是 不是一个函数,我们给它定义成一个函数就好了嘛,定义成一个函数好,再来跑一下呢, 就能够去得到正确的一个密文值了。那么怎么去验证它是不是正确的,就通过啊 python 端来去调用啊这个函数,接受它的返回值之后,再去测试能不能得到正确的数据呗。所以这个地方我们就可以去把这个 e r e x e c g s 啊这样的一个模块给它用一下,去编一对应的 js 代码,去调用我们这个地方所去生成的一个 get e n c 函数就能够去得到它的返回值,我们再把这个返回值呢给到这个参数的位置,让它去携带这个参数来做请求,右键去跑一下呢,就得到了正确的数据呢。