自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 数据可视化篇——pyecharts模块

ECharts 官方网站 : https://echarts.apache.org/zh/index.htmlECharts 是 百度 提供的 基于 JavaScript 的开源可视化库 , 可以借助该 函数库 绘制 精美的 图表;ECharts 支持多种图表类型 , 包括折线图、柱状图、散点图、饼图、雷达图、地图等 , 并且可以根据需求进行自定义配置;它还支持动态数据更新、交互操作、动画效果等功能,可以让用户更加直观地理解和分析数据。

2023-11-01 15:05:23 913

原创 JS逆向基础之反调试

平时在调试js代码时,经常会出现浏览器卡死的情况,有时候是在调试js的过程中,有时候是在console中调试代码的过程中,有时候是在格式化代码之后,甚至有时候在打开开发者工具之后直接卡崩溃。此处看到的是一个非常简单的例子,在实际的逆向过程中,代码可能是有成百上千乃至上万行,所以调用的函数与实际定义的函数可能会有很大的差别。可以看到,混淆后的代码有很多的$符号,可读性几乎是没有的,所以这种代码是必须去还原之后才能够进行逆向,一般可以通过一些解码工具进行解码,当然也可以将其复制到控制台中运行。

2023-10-30 14:34:35 1496

原创 Python爬虫实战案例——第七例

首先对于浏览器来说,需要播放视频的时候,那么浏览器肯定是要对视频地址请求的,那请求的时候这个视频的播放地址必然在请求前已经是拿到了浏览器中,所以,播放前的播放地址,必然是位于动态加载或者静态的某一个文件当中。那么问题就是这个地址从哪里来的呢,我们可以通过搜索url中 的一些特殊的字符查看,例如这些数字组合,根据以往的经验判断这些数字串必然是这个视频的id,而id必然就是唯一的存在。首先要明白我们本次任务的目标——下载页面中的视频(以人物为例),那么也就意味着我们最终的目的就是要找到视频的下载地址。

2023-10-30 13:28:09 1503

原创 Python爬虫实战案例——第六例

可以看到两页不同的请求变化的参数为index和page,再多访问几页也是一样的结果,所以断定index随page变化而同步变化。这样来看就非常明显了,这个值就是从静态页面中可以直接提取的,那么我们就需要先访问详情页面将sightId值解析出来作为评论接口的参数。首先来观察静态页面,在其中我们是无法看到用户评论的,所以初步断定用户评论是异步加载的数据。进入主页之后可以看到每一个景点是根据推荐来进行排序的,所以我们如果要获取人气值最高的景点的话需要获取人气排序时的url,点击根据人气排序即可。

2023-09-28 21:48:53 416

原创 Python爬虫实战案例——第五例

可以看到只有最后的数字发生了变化,前面的不管是域名还是路径都没有任何的区别。可以看到点击之后抓到的包中返回了图片url,那么也就是说通过这个包我们就可以拿到第二页的图片地址了。那么第三页呢,它的url必然和第二页是有着一定的共同之处的。这就很润了,一共九张图片都在当前这个html页面中,那么就直接xpath解析就好了,但紧接着后边页面的图片又怎么来呢。点击“查看更多”然后才会加载出来新的图片,毫无疑问,除了第一页之外的图片都是异步加载来的,所以我们来抓包分析一下。可以看到图片是位于一个。

2023-09-17 16:28:21 1566

原创 Python爬虫逆向猿人学刷题系列——第七题

但是这里我们对比多次请求获取到的字体文件转换的xml文件会发现每一个数字尽管其对应的name不同,但其坐标点的位置是相同的。同一个数字,它在坐标系中的坐标点是相同的,所以我们可以根据on数组是否相同来判断两次请求的数字是否是同一个,如果是同一个的话我们再去映射最先构造好的基本模板(基本模板中也要获取on数组用于和新请求中的on数组进行对比)。结合上方xml截图和响应数据截图来看相应数据的value就是xml中看到的name值,所以我们可以根据这个关系来构造一个基本的明文数字与name之间的映射模板。

2023-09-16 12:00:00 989

原创 Python爬虫实战案例——第四例

在这里就可以看到入口处就是刚才定位到的d函数,所以window.asrsea函数中传递的参数依次为d函数中的形式参数d,e,f,g,打上断点来到console中测试输出不难发现这三个值都是固定值,所以就不用再去找其生成逻辑了。这个参数中的各个键值对不难分析,重复刚刚对网页的分析步骤就能够知道rid和threadId表示歌单的标识以及id组成,pageNo为页数,其它参数不用改动,所以要获取其他歌单的评论的话修改rid和threadId即可。那么接下来就要去分析e,f,g三个参数是从何处生成而来。

2023-09-15 16:35:22 401 1

原创 Python爬虫实战案例——第三例

字体加密的原理:就是将一种特定的字体库来代替浏览器本身的字体库显示的过程。基本流程:1. 请求页面2. 获取加密的字体库3. 解析字体库,获取字体间的映射关系4. 获取加密的字体,获取字体间的映射关系,一一对应

2023-08-28 15:14:16 970

原创 Python爬虫猿人学逆向系列——第六题

这里其实就涉及的是浏览器的环境和nodejs环境的不同,在浏览器中window是不能被重新赋值的,所以webpack中的这个置空并没有任何意义,但是在nodejs中就不一样了,window可以被重新赋值,因此就直接导致了上方我们看到的错误信息了。所以,window.o在肯定是在代码中,至于为什么搜不到,那当然就是被混淆了,所以我们就来看看混淆的代码,就在最开头的位置,一个很明显的AA混淆,将它还原一下,这种混淆由专门的工具还原,手动还原的话就直接去掉最后的括号然后执行就可以了。啥也不是,那就直接删掉。

2023-08-24 17:56:52 1660

原创 Python爬虫实战案例——第二例

本篇文章主要是为大家提供某些电影网站的较常规的下载电影的分析思路与代码思路(通过爬虫下载电影),我们会从搜索某部影片的关键字开始直到成功下载某一部电影。

2023-08-23 19:52:05 2824

原创 Python爬虫逆向实战案例(五)——YRX竞赛题第五题

Python爬虫实战案例——YRX竞赛题系列题目:抓取全部5页直播间热度,计算前5名直播间热度的加和地址:https://match.yuanrenxu

2023-08-22 17:52:08 1170

原创 Python爬虫实战案例——第一例

X卢小说登录(包括验证码处理)地址:aHR0cHM6Ly91LmZhbG9vLmNvbS9yZWdpc3QvbG9naW4uYXNweA==

2023-08-20 16:13:39 4753

原创 Python基础语法入门(第二十三天)——正则表达式

正则表达式是一种文本模式,用于匹配字符串,它是由字符和特殊字符组成的模式。正则表达式可以用于验证、搜索、替换和提取字符串。其能够应用于各种编程语言和文本处理工具中,如Python、Java、JavaScript等。正则表达式在线测试工具:https://c.runoob.com/front-end/854/

2023-08-19 17:35:45 132

原创 猿人学刷题系列(第一届比赛)——第四题

题目:采集这5页的全部数字,计算并提交结果地址:https://match.yuanrenxue.cn/match/4。

2023-08-19 17:35:10 3525

原创 Python基础语法入门(第二十二天)——并发编程

在Python中,并发编程的实现有多种方式,包括多线程、多进程和异步编程。每一种方式都有其使用的场景和特点。那么如何去选择多线程、多进程和多协程呢?要知道如何选择的话就要了解一下什么是CPU密集型计算、什么是I/O密集型计算;多线程、多进程和多协程又有什么样的区别。

2023-08-18 17:14:18 114

原创 Python基础语法入门(第二十一天)——异常处理

异常是程序执行过程中出现的影响程序正常执行的一个事件。当异常产生时如果没有对异常进行捕获并处理则程序会终止执行。异常处理就是让程序在处理完异常之后继续正常执行从而使程序不至于在出现异常时导致退出或崩溃。常见的异常类型Exception:所有异常的基类。可以用来捕获任何类型的异常。ValueError:当一个函数接收到一个无效的参数时引发。TypeError:当一个操作或函数应用于不适当类型的对象时引发。IndexError:当访问一个不存在的列表索引或字符串索引时引发。

2023-08-17 14:12:13 98

原创 猿人学刷题系列(第一届比赛)——第三题

本题主要考察请求逻辑,可以借助fiddler或Charles等抓包工具进行分析。

2023-08-16 20:35:40 118

原创 Python基础语法入门(第二十天)——文件操作

写入的时候需要注意文件打开的模式是否是二进制读写模式,以此来判断是否需要将写入的内容进行二进制转换。在实际使用中,可以根据不同的操作系统和需求选择适合的路径表现形式。在Python中,路径可以以不同的表现形式进行表示。创建文件夹,并且会创建出中间所有必要的中间文件夹,来确保完整路径名存在。可以指定文件的名称和打开模式(读取模式、写入模式等)。函数打开文件后,应该始终在不需要文件时关闭文件,以释放资源。函数是Python中用于打开文件的内置函数。在不同的操作系统中,路径使用的斜杠并不是相同的,但是可以通过。

2023-08-15 20:25:20 118

原创 猿人学刷题系列(第一届比赛)——第二题( js 混淆 - 动态cookie 1)

题目:提取全部5页发布日热度的值,计算所有值的加和地址:https://match.yuanrenxue.cn/match/2。

2023-08-12 20:11:48 6368

原创 Python基础语法入门(第十九天)——可迭代对象与生成器对象

在上文中提到——凡是实现了__iter__()方法的对象都视为可迭代对象。那么在实现自定义的可迭代对象时,需要在类中重写__iter__()方法来进行创建。print(i)在上述示例中,定义类MyIterable,在类中实现了__iter__()方法。在该方法中通过内置函数iter()函数将self.data转换为迭代器对象,从而使得MyIterable的示例称为了一个可迭代对象,通过来循环遍历该实例中的元素。

2023-08-12 11:59:05 178

原创 Python基础语法入门(第十八天)——类方法与魔术方法

*类方法(Class Method)**是一种在类级别上定义的方法,而不是在实例级别上定义的方法。类方法使用装饰器来声明,其第一个参数通常被命名为cls,表示当前类。和实例方法不同,类方法可以直接通过类本身调用,而不需要先创建对象。,也称为,是在Python中具有特殊功能的特殊方法。这些方法使用双下划线(__)作为前缀和后缀,因此被称为魔术方法。魔术方法可以用于自定义类的行为,例如操作符重载、对象创建和销毁、属性访问等。这些方法可以在类中被重写,通过在类中定义特定的魔术方法,可以改变类的默认行为。

2023-08-10 17:30:11 119

原创 猿人学刷题系列(第一届比赛)——第一题

本文为猿人学第一届竞赛web题目第一题解题流程讲解,思路仅供参考,如有疑惑或涉及其他问题请私聊本人!!

2023-07-07 17:27:44 962

原创 Python基础语法入门(第十七天)——面向对象三要素

关于面向对象,在上篇文章中说过其是一个很抽象的概念,所以希望大家能够结合文章去花费大量的时间来进行练习,通过代码来辅助理解其定义是一个不错的学习方式。

2023-07-07 17:26:18 83

原创 Python基础语法入门(第十六天)——面向对象基础

面向对象是一个相对较抽象的概念,是需要花费时间进行练习的内容,本篇文章中仅讲解了基本概念与基本应用,下篇文章中将对其三要素进行重点讲解。思考:多次创建对象时这些对象都使用的是同一个类,那么是否意味着这些对象都是同一个呢?练习:已知小红和小明二人都是高三毕业生,刚结束高考一月的二人决定参加兴趣班,小红平时喜欢羽毛球,小明喜欢电竞项目,请通过面向对象的思维来编写代码体现出二人在加入兴趣班后的基本个人介绍。目前还有未能成功配置环境的朋友请关注公众号或添加VX或直接私聊本人协助,可远程协助安装!!!!

2023-07-06 17:20:56 51

原创 Python基础语法入门(第十五天)——装饰器传参与匿名函数

在上篇文章中留下了一个问题——装饰器的传参如何实现?其实对于这个问题来说,首先要搞清楚传参的顺序是什么。我们已知的是装饰器的本质就是函数,那么在这嵌套了多层的函数中每一个函数接收的参数是哪一个,作用域哪个范围,这就是实现装饰器传参前需要解决的问题。

2023-07-02 17:00:47 258

原创 Python基础语法入门(第十四天)——函数(三)之闭包与装饰器

*闭包是指在函数内部定义的函数,并且该函数内部可以访问外部函数的变量。**具体来说,当一个内部函数引用了外部函数的变量时,即使外部函数已经执行完毕,这些变量仍然会被保留在内存中。Python中的闭包通常用于实现一些高级特性,如装饰器、生成器等。

2023-06-30 15:53:50 69

原创 Python基础语法入门(第十三天)——函数(二)之函数递归

在上一章节讲解了关于函数的基本使用,知道了Python中函数的基本创建、参数传递、返回值等基本内容。那么本篇文章中就来对函数的高级用法进行学习。首先,大家在脑海里面回顾一下关于return的用法。然后思考一下在return的时候如果我们去返回这个函数本身的调用是否可行呢?带着这个问题,我们来进入本篇文章的内容学习。

2023-06-28 18:45:00 63

原创 Python基础语法入门(第十二天)——函数(一)

在Python中,函数是一段可重复使用的代码块,用于完成特定的任务。函数可以接收输入参数(也称为参数或实参),执行特定的操作,并返回一个结果(也称为返回值,默认情况下返回为空)。

2023-06-23 12:48:24 31

原创 Python基础语法入门(第十一天)——集合

集合(Set)是Python中的一种数据结构,其用于存储一组不重复的数据,与列表、元组不同的是,集合中的元素没有顺序,并且每一个元素都是唯一的,不会出现重复的情况。

2023-06-21 18:48:32 45

原创 Python基础语法入门(第十天)——字典

字典是一个无序、可变和有索引的集合。其由键和值组成。它是一种可变容器模型,可以存储任意数量的Python对象,每个对象都有唯一的键值。,而。字典中的值可以通过键进行访问,而,如果出现重复的话会覆盖掉原来已经含有的值。字典可以通过构造函数dict()来进行创建,也可以使用花括号{}来进行创建。

2023-06-19 13:29:29 112

原创 Python基础语法入门(第九天)——循环

循环(Loop)是计算机编程中的一个基本概念,是一种重复执行某段代码的结构,通常被用于遍历或处理一组数据,或者重复执行一些代码直到满足某个条件为止。循环语句通常包括循环条件和循环体两部分。循环条件用于控制循环的执行次数,当条件成立时,代码块会被重复执行,直到条件不成立或达到程序设置的最大循环次数为止。循环体则是需要被重复执行的代码块。

2023-06-17 18:45:00 413

原创 Python基础语法入门(第八天)——元组

Python中元组是一个不可变的序列,表示以逗号分隔的一组数据。元组中的元素可以是不同的数据类型,可以包含整数、浮点数、字符串、列表和其他元组。元组本身是不可变数据类型,所以一旦创建之后就不可再修改元组中的元素。

2023-06-16 16:38:33 109

原创 Python基础语法入门(第七天)——列表

其可以存储任意数据类型的元素,包括整数、浮点数、布尔值、字符串、元组、列表、字典等。在列表中是存在着一些常用的方法的,可以通过这些方法往列表中添加、往指定位置插入、删除等。在已有的列表中,与字符串去单个字符相同,可以使用索引的方式来访问列表中的元素。通过索引取值并修改该索引对应的元素值,如将上方列表中第三个元素修改为。并赋值一个列表,该列表中包含了数字和字符串两种不同类型的数据。两个列表可以进行合并,合并的方法可以通过"+"运算符进行合并。这里创建列表,但实际上就是将一个元组转换成了列表。

2023-05-30 18:02:26 136

原创 Python基础语法入门(第六天)——条件语句与比较运算符结合

条件语句的应用主要是结合比较运算符(第四天文章)进行使用,一般条件的判断返回的值为布尔类型,也就是True或False。接下来看实际应用。

2023-05-23 18:04:37 235

原创 Python基础语法入门(第五天)——条件语句

条件”是生活中常常听到的定义,例如小王想要娶一位年轻漂亮的女孩为妻,那么第一条件小王必须是未婚人士,其次小王要娶的女孩要年满20且未婚,这是二人能够修成正果的条件,只有满足了这些条件才能够结婚。在Python中也是有着条件判断的语法的,这样的结构我们称之为条件语句。当代码执行到条件语句时,就会去判断条件是否满足,只有条件满足的时候代码才会执行到满足条件的代码块之中。inputinput是用于接收键盘输入的内容的函数,其返回值为字符串类型。

2023-05-21 16:50:59 210

原创 Python基础语法入门(第四天)——运算符

在 Python 中,运算符是用于在变量之间执行操作的符号或标志。它们分为不同的类别,如算术运算符、比较运算符、逻辑运算符、位运算符等,每个运算符都有不同的优先级。在本文中,我们将详细讨论 Python 中的各个运算符及其优先级关系。

2023-05-19 15:22:22 119

原创 Python基础语法入门(第三天)——数据类型

在编程中,数据类型是一个很重要的概念,变量可以用来存储不同类型的数据,同时不同类型的数据也能够进行不同的操作,而Python中常见的数据类型如下所示strintfloatcomplexlisttuplerangedictsetfrozensetboolbytesbytearraymemoryview同时我们可以通过内置函数type()来获取某个对象的数据类型。执行结果:在这里我们就可以看到声明的变量name是一个字符串类型的数据。如果要指定数据类型的话可以通过内置构造函数进行转换。

2023-05-16 17:33:32 98

原创 Python基础语法入门(第二天)——输出、注释、变量

变量就是一个用于存储数据的容器,在我们编写的代码中可以用变量来表示某一特定的值或者数据,例如一个数字或者某个人的名字等。将一个值或数据放在一个变量,该过程可称为变量的声明。

2023-05-14 20:09:11 511

原创 Python基础语法入门(第一天)——环境配置

首先来说一下为什么要开这个专栏。其一是在各大群聊发现初学Python的人有很多,但是大家都迷茫在如何学Python这一问题之上。有人想学,但是网上的资料五花八门,写的东西也是这里一点那里一点,要么就是中间遗漏了很多关键点没有体现,甚至有可能写文章的这个人都不懂什么是Python,只是照本宣科蹭Python这门语言的热度,导致让一些真正想学习Python的人没有办法接受到Python真正系统性的学习;

2023-05-13 21:59:59 397

原创 Python爬虫扫盲篇——如何批量采集网站中的图片数据

这个呢也算是鄙人的一个失误,仅仅是在最后的scrapy中体现了图片的采集,还是用已经封装好的图片管道来实现的,所以导致了一些从来没有接触过爬虫相关的朋友出现了这样的疑惑,那么今天我们就来为这些存在相同困惑的朋友来扫扫盲。首先,图片是什么,究其本质来看的话,图片就是文件的一种表现形式,那么在网络传输过程中,文件的传输与文本的传书是存在着一定的区别的。而且这个URL是有一个jpg扩展的,所以十有八九这就是这张图片的地址,我们来验证一下,将这个url复制下来去访问一下。首先,构造主页访问的请求,并实现翻页操作。

2023-05-12 18:49:52 1851 1

Python爬虫某蜂窝旅游攻略网站热门游记数据采集代码+仅供学习使用禁止用于商业用途

包括完整的热门游记采集代码(翻页未实现,自行添加循环实现参数控制翻页即可),js代码为OB混淆代码,本人是直接硬扣的没有解混淆,如果看不懂无法分析可以联系本人协助理解,或者下载相关的解OB混淆工具解混淆之后再分析JS代码。对于代码有任何不理解之处亦可以联系本人讲解。注意!本代码仅供学习使用参考思路,禁止用于一切商业用途!!!!!

2023-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除