自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新版知乎反爬虫js逆向过程

大约是在2020年3月底左右,知乎的反爬虫开始升级,再也不能放个UA就肆无忌惮的爬取了,此次的爬虫升级主要是在请求头中增加了一些加密参数,如图,其中必不可少的参数是x-zse-86,x-ab-param参数可以不要,x-zse-81参数是因为滑动翻页才会出现,不过有种方式可以让它不出现也可以翻页。破解x-zse-86的过程记录如下:1.全局搜索,定位加密参数所在位置2.找到参数,打断点![在这里插入图片描述](https://img-blog.csdnimg.cn/2020061919470689.p

2020-06-19 19:56:40 4445 10

转载 git修改分支名

假设分支名称为oldName想要修改为 newName1. 本地分支重命名(还没有推送到远程)git branch -m oldName newName2. 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)a. 重命名远程分支对应的本地分支git branch -m oldName newNameb. 删除远程分支git push --delete origin oldNamec. 上传新命名的本地分支git push origin ne

2022-01-07 10:48:09 358

原创 CPU掩码(cpumask)与数字的转换

解决方案:isolcpus= "10-15,50-55"def parse_cpumask(isolcpus,cpu_len=80): isolcpus_list = isolcpus.split(",") cpumask_list = [1]*cpu_len for cpus_list in isolcpus_list: cpus = [int(cpu) for cpu in cpus_list.split("-")] cpumask_lis

2021-10-19 21:01:22 2707

转载 linux修改内核启动顺序

CentOS 6 系统更改内核启动顺序方法:1、查看编辑/etc/grub.conf 文件vim /etc/grub.conf2、在grub.conf文件中决定开机使用哪个内核版本做启动的参数是default,默认值为0,代表从最新的内核启动。代表启动的内核版本从上往下依次是0、1、2等。CentOS 7 系统更改内核启动顺序方法:由于CentOS7使用grub2作为引导程序,所以和CentOS 6有所不同,并不是通过修改/etc/grub.conf来调节启动项。1、执行如下命令,查看系统内部

2021-09-27 15:26:27 659

转载 linux更改内核启动顺序

CentOS 6 系统更改内核启动顺序方法:1、查看编辑/etc/grub.conf 文件vim /etc/grub.conf2、在grub.conf文件中决定开机使用哪个内核版本做启动的参数是default,默认值为0,代表从最新的内核启动。代表启动的内核版本从上往下依次是0、1、2等。CentOS 7 系统更改内核启动顺序方法:由于CentOS7使用grub2作为引导程序,所以和CentOS 6有所不同,并不是通过修改/etc/grub.conf来调节启动项。1、执行如下命令,查看系统内部

2021-09-27 15:23:18 1417

原创 python易错知识点

1.比较运算先看一个例子:表达式 4>3==3 想一下返回什么,都是比较运算,>和==位于同一优先级,运算应该是从左到右,按理应该是4>3为True,然后True==3返回False才对,但是结果却是True 解释一下,其实 表达式4>3==3是4>3 and 3==3的简写,and两边为True,所有最后返回True,不信可以在看另一个例子:如果是按从左到右顺序执行 ,应该返回True才对,同样,把它还原成4>3 and 3==1就对...

2021-07-28 10:57:18 802

转载 linux设置开机自启动命令

方法一:修改 /etc/rc.d/rc.local 文件/etc/rc.d/rc.local文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。但是,首先需要确认你有运行这个文件的权限。$ chmod +x /etc/rc.d/rc.local为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。$ vim auto_run_script.sh#!/bin/bashdat.

2021-07-27 10:30:06 27898 9

原创 交换机与路由

摘要:网络交换机在设备之间转发数据包。交换机将数据包直接发送到设备,而不是像路由器那样将其发送到网络。1.什么是网络交换机网络交换机连接网络(通常为局域网(LAN)* )内的设备,并向或从这些设备转发数据包。与路由器不同,交换机仅将数据发送到它打算发送的单个设备(可以是另一台交换机、路由器或用户的计算机),而不是发送到多个设备的网络。可以将网络交换机的概念与铁路交换机进行比较。在铁路上,交换机是列车可以从一条轨道转换到另一条轨道的点。当列车需要移动到其他轨道以到达目的地时,铁路员工会激.

2021-06-29 19:12:07 265

原创 VIM多行注释和取消多行注释

多行注释: 1.vim进入文件后,首先按esc进入命令行模式,然后按ctrl+v,进入列模式; 2.按上下键选中你要注释的多行,然后按'I'(大写I)键,进入插入模式; 3.输入‘#’,然后按下Esc键,就可全部取消注释。多行取消注释 vim进入文件后,首先按esc进入命令行模式,然后按ctrl+v,进入列模式; 按上下键选中你要取消注释的多行; 按d键就可全部取消注释。 另一种介绍稍微麻烦点的注释与取消注释:注释1-5行:在末行模...

2021-06-25 10:14:57 2284

原创 python matplotlib频率分布(累计)直方图

import matplotlib.pyplot as pltimport seaborn as snsfrom matplotlib.ticker import MultipleLocatorclass Histplot: def __init__(self, y_data, x_data, linetype='ro-', legends=None,title=None, xlabel=None, ylabels=None, fsize=(20, 15.

2021-06-02 16:00:21 5704

原创 CPU MASK和数字的转换

转换函数如下:def calc_cpumask(max): all = 1 ii = 1 while ii < max+1: all |= 1 << ii ii += 1 return "%x" % allprint(calc_cpumask(10)) #7ff 表示第10个CPU的掩码为7ff

2021-05-14 17:43:00 397

转载 http与https梳理

网上挺多介绍 HTTPS,但我发现总是或多或少有些点有些遗漏,没有讲全。今天试图由浅入深地把 HTTPS 讲明白,相信大家看完一定能掌握 HTTPS 的原理。本文大纲如下: HTTP 为什么不安全 安全通信的四大原则 HTTPS 通信原理简述 其他 HTTPS 相关问题 HTTP 为什么不安全HTTP 由于是明文传输,主要存在三大风险。①窃听风险中间人可以获取到通信内容,由于内容是明文,所以获取明文后有安全风险。②篡改风险中间人可.

2021-01-20 21:25:54 169

原创 python 迭代器和生成器的理解

迭代器:一些定义:迭代器协议:对象必须提供一个next方法,执行方法要么返回迭代器中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)可迭代对象:实现了迭代器协议的对象(实现方式:对象内部定义了一个iter()方法)迭代: 从迭代器中取元素的过程在Python中,迭代器是遵循迭代协议的对象。使用iter()从任何序列对象中得到迭代器(如list, tuple, dictionary, set, str等)。另一种形式的输入迭代器是generat.

2021-01-18 23:14:48 341 5

原创 scrapy post发送请求是报400响应码的问题

先说解决方法:去掉你请求头中的 Content-Length在scrapy的过程中发送请求的时候,你会发现特别是post请求很多时候会报400的错误,明明同样的请求在requests中能请求成功,你尝试了scrapy.Request, scrapy.http.Request, scrapy.FormRequest都还是报这个错误,于是开始怀疑scrapy是不是有问题。是的,scrapy是有问题的,因为它在背后默默做了一些操作,不像requests那么简洁,很多时候post请求都是因为你的请...

2021-01-18 11:45:59 1080

原创 pymongo给集合创建索引

查看pymongo中collection.py源码描述:def create_index(self, keys, session=None, **kwargs): """Creates an index on this collection. Takes either a single key or a list of (key, direction) pairs. The key(s) must be an instance of :class:`basestring`

2021-01-11 17:45:48 1091

转载 搞懂浏览器缓存原理

前言[实践系列] 主要是让我们通过实践去加深对一些原理的理解。[实践系列]前端路由[实践系列]Babel原理[实践系列]Promises/A+规范有兴趣的同学可以关注 [实践系列] 。 求star求follow~如果觉得自己已经掌握浏览器缓存机制知识的同学,可以直接看实践部分哈~目录 1. DNS 缓存 // 虽说跟标题关系不大,了解一下也不错 2. CDN 缓存 // 虽说跟标题关系不大,了解一下也不错 3. 浏览器缓存 // 本文将重点介绍并实践 复制代

2020-11-11 20:01:32 682

原创 爬虫逆向之hook

分享一段基本的hook代码(function (){ function hook(object,attr) { var func = object[attr] object[attr] = function () { console.log("hook",object,attr) var ret = func.apply(object,arguments) debugger

2020-10-28 19:59:34 1108

原创 docker修改容器中的文件

这里提供两种方法:1.使用命令docker exec -it 容器id /bin/bash进入容器中,安装vim编辑器。 1).同步源索引:apt-get update 2).安装vim:apt-get install vim 3).输入vim 文件名 即可编辑文件了注:直接输入命令apt-get install vim 会报错E: Unable to locate package vim,必须等第一个命令完成后再安装vim。2.使用docker ps...

2020-10-28 16:23:54 3807

原创 爬虫时间提取格式化

1.时间戳转标准时间import datetimedef timestamp_format(timestamp): """将时间戳转换为时间""" timestamp_10 = int(int(timestamp)/1000) if len(str(timestamp))>10 else int(timestamp) time_local = time.localtime(timestamp_10) format_time = time.strftime("%

2020-09-09 20:31:09 612

原创 mysql索引笔记

索引是帮助mysql高效获取数据的排好序的数据结构1.二叉树:数据大层级变高,IO多2.红黑树:插入和删除需要维持平衡,数据量大了层级不可控3.B-tree:节点中也有数据,每一次加载到内存中的数据变少4.B+tree:非叶子节点不存data,可以存放更多的索引,叶子节点用指针连接,提高区间的访问性能5.hash:对索引的key进行一次hash计算就可以定位除数据存储的位置,很多时候Hash索引(O(1))比B+tree索引效率要高,但是hash所有只能满足"=","IN"查询,范围查询

2020-09-06 16:19:02 129

原创 python从零开始到scrapy框架应用(youtube示例)

python是目前开发爬虫最好的语言,本次爬取youtube视频所需用到: python环境,scrapy框架,pycharm编译器,mongo数据库步骤:1.windows python环境搭建和安装: 进入python官网https://www.python.org/进行下载python3.7,进行安装并配置环境变量2.安装python编译器pycharm 进入pycharm官网https://www.jetbrains.com 下载pycharm社区版本并安装3.安装m...

2020-08-27 10:36:58 885 3

原创 使用python从mongodb中导出json和csv格式

1.导出json格式# encoding:utf-8import pymongoimport jsonFILE = "E:\\test.json"MONGO_URL = 'mongodb://127.0.0.1:27017' MONGO_DB = 'Test'MONGO_COLLECTION = 'test' client = pymongo.MongoClient(MONGO_URL).MONGO_DB.MONGO_COLLECTIONdatas = client.find({}

2020-08-21 11:38:03 2208

原创 mongo数据库和表的复制

1.可以借用工具:Studio 3T for Mongo选择一个数据库中的Collections集合,然后按住 Ctrl+C 复制快捷键会弹出如下帮助框。然后选择目标数据库(可以复制到不同主机的目标数据库下),点击 Ctrl+V 粘贴快捷键,重命名一下复制的名称即可2.复制数据库: 语法:db.copyDatabase(fromdb,todb,fromhost,username,password,mechanism)从远程主机复制参数fromdbt: 源db; to..

2020-08-05 17:43:17 746

原创 chrome设置当前页面禁止加载js

在76版本以上的chrome浏览器,想要禁止加载js,先按F12,再按F1,然后找到Preference,找到Debugger,如图然后在刷新网页,可以看到原先js加载的部分加载不出来了

2020-06-12 10:30:26 4432

转载 scrapy导出csv时字段的一些问题

scrapy -o csv格式输出的时候,发现输出文件中字段的顺序不是按照items.py中的顺序,也不是爬虫文件中写入的顺序,这样导出的数据因为某些字段变得不好看,此外,导出得csv文件不同的item之间被空行隔开,本文主要描述解决这些问题的方法。1.字段顺序问题:需要在scrapy的spiders同层目录,新建csv_item_exporter.py文件内容如下(文件名可改,目录定死)from scrapy.conf import settingsfrom scrapy.contrib.exp

2020-06-09 22:26:32 663

原创 FTP文件上传下载和修改

1.连接到ftp服务器:windows上下开始窗口输入ftp,打开黑窗口输入open 服务器地址提示输入用户名和密码之后登录上了ftp服务器2.目录操作FTP 命令可以列出、移动和创建文件夹,如同我们在本地使用我们的电脑一样。ls可以打印目录列表,cd可以改变目录,mkdir可以创建文件夹。3.上传操作put 文件路径4.下载文件getfile5.删除文件DELETE 文件名删除文件内的所有文件:MDELETE *删除指定的多个文件,可以通配符匹配 (例如删除 test1.tx

2020-06-01 10:15:39 758

原创 python中linecache模块的使用

linecache模块主要用于读取文件,它和使用open或with open 打开文件有所不同,从名字上就可以看出,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化。导包:这是python3自带的一个包,所以可以直接导入import linecachelinecache.getlines(filename)从名为filename的文件中得到全部内容,输出为列表格式,输出格式等同于 f.readlines()linecache.getline(filename,lineno)从名

2020-05-22 20:23:44 3236 4

原创 python文件写入中文编程unicode编码的问题

1.写入字符串:要指定编码为utf-8,(python3默认是utf-8)with open(‘xxx.txt’,‘a’,encoding=“utf-8”) as f:f.write(‘xxx’)2.写入字典:由于文件写入时只能是字符串类型,所以要先将字典转化为json对象,使用json.dumps(data,ensure_ascii=False),默认ensure_ascii=True,就是这东西把你的中文变成了unicodedata = {“name”:“润年”}with open(‘xxx.

2020-05-21 22:45:52 5599 2

原创 关于pycharm点击关闭后,窗口无法关闭的问题

当你点击pycharm右上角的关闭之后,发现你的项目程序没了,但是pycharm窗口还在,而且在pycharm顶端还显示着你的项目路径,你再次点击关闭窗口,发现怎么都关不掉,这时你应该想一想,在你一开始点击关闭的时候,你的程序处于什么状态。一般来说,如果你只运行了一个pycharm项目,在关闭的时候你的程序还在运行着,那么你关闭pycharm时会有提示Terminate是在关闭pycharm之前,先关闭运行中的项目(kill pid的那种)Disconnect:程序仍然运行,你的项目目录在pycha

2020-05-18 10:01:37 14828 7

原创 mongo批量插入数据和长链接问题

1.大批量数据插入:当爬虫获取的数据量较大时,一条一条的写入MongoDB会过于消耗资源。这时候就需要用到insert_many()方法,把数据放入列表中并批量插入,但是如果你为了数据不被重复建立了MongoDB的唯一索引,就可能会导致部分数据无法写入。因为insert_many()默认是按序写入,一条数据写入失败,后面的数据就无法写入了。所以需要修改默认参数ordered。当ordered=False时,数据就会被乱序并行插入,所以每个字典的插入操作互不影响data_list = client.

2020-05-15 16:19:52 762

原创 docker使用Dockerfile创建镜像的一些基本命令

docker创建镜像Dockerfile要与你项目文件放在同一目录下,然后在该目录下运行命令docker build -t 项目名:项目版本 .如docker build -t mytest:0.01docker创建容器:这里有两种方式:一种是docker run ,另一种是docker create它们的区别是docker run是创建容器并立刻运行容器,而docker create...

2020-04-23 14:33:18 844

原创 如何从非结构性网页中提取数据(一)

待续。。。

2020-04-21 17:08:04 349 1

原创 使用airtest连接模拟器

打开模拟器首先在cmd中输入adb device -l查看是否连接上,如果显示设备是offline,一般是5037端口被占用了,使用netstat -aon|findstr 5037查看该端口被哪些占用,使用taskkill /pid 3676 /f 结束占用得程序,然后再启动一下adbadb server start查看连接的设备:adb devices -l...

2020-04-17 19:29:54 1988

原创 selenium设置超时时间

利用selenium请求网页的时候,有时因为某种原因使得页面一直处于加载状态,使得源代码一直不能返回。这种情况可以全局设置driver的加载时间,超时后停止加载然后强制返回源代码。driver = webdriver.Chrome()初始化driver对象后,设置一下两个超时时间driver.set_page_load_timeout(10) #页面加载超时时间driver.se...

2020-04-17 17:09:56 6290 2

转载 python+fiddler获取微信文章的阅读数和点赞数

具体详细信息见:https://blog.csdn.net/qq_41686130/article/details/88296981?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task我提炼了获取文章连接后提取阅读数、点赞数和评论数的部分代码如...

2020-03-27 17:22:53 1370

原创 .gitignore没能生效的问题

问题出现的原因: 在初始化git仓库的时候没有创建,.gitignore文件来过滤不必要提交的文件, 后来却发现某些文件不需要提交, 但是这些文件已经被提交了, 这时候创建.gitignore文件忽略这些文件时, 发现ignore的规则对那些已经被track的文件无效.其实.gitignore文件只会忽略那些没有被跟踪的文件, 也就是说ignore规则只对那些在规则建立之后被新创建的新文件生...

2020-03-24 15:58:39 174

原创 python中的requirements.txt

为什么python项目需要requirements.txt文件?因为任何应用程序通常需要设置安装所需并依赖一组类库来满足工作要求。requirements.txt文件就是指定和一次性安装包的依赖项具体一整套方法。我们在获取到一个python新项目时,可根据此文件来一次性安装该项目所需要的依赖库。requirements.txt的格式和其他普通txt一样,它包含了每个python库和该库的...

2020-03-03 15:07:00 538

原创 万能将unicode编码转换为汉字的方法

Python中有两种默认的字符串:str和unicode。在Python中一定要注意区分“Unicode字符串”和“unicode对象”的区别。后面所有的“unicode字符串”指的都是python里的“unicode对象”。事实上在Python中并没有“Unicode字符串”这样的东西,只有“unicode”对象。一个传统意义上的unicode字符串完全可以用str对象表示。只是这时候...

2020-02-06 16:36:36 5816

原创 python requests中的post请求的参数问题

问题:最新在爬取某站点的时候,发现在post请求当中,参数构造正确却获取不到数据,索性将post的参数urlencode之后放到post请求的url后面变成get请求,结果成功获取到数据,对此展开疑问。1.http请求中Form Data和Request Playload的区别: Ajax post请求中常用的两种参数形式:form data 和 request payload g...

2020-01-20 20:34:27 32820 5

原创 计算机通用知识

1.查看自己电脑的公网ip: curl ifconfig.me 或者直接国内的http://ip138.com,国外的http://ifconfig.me

2020-01-14 10:29:59 220

空空如也

空空如也

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

TA关注的人

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