4 fsh_walwal

尚未进行身份认证

walwal

等级
TA的排名 18w+

web自定义字体转图片

之前看到爬虫攻防之前端策略简析中提到猫眼电影的今日票房栏为自定义字体,但是博客中提到使用fonttools进行加载然后人工先把几个数字的座标点进行标记,然后每次刷新时,拿到新的woff字体时,通过fonttool将字体转换成xml格式,根据座标点信息,判断其uncode值分别是多少。然后再将代码中的“方框”转换成真实数字。感觉这样比较麻烦,于是想通过转为图片然后进行识别得到数字,代码如下...

2018-07-30 18:40:53

scrapy数据收集器数据远程获取

scrapy的数据收集器可以实时记录爬虫状态数据,默认在爬虫结束是打印:C:\Anaconda2\Lib\site-packages\scrapy\statscollectors.pyclass StatsCollector(object): def __init__(self, crawler): self._dump = crawler.settings.ge...

2018-07-24 15:09:18

scrapy主动触发关闭爬虫

项目需求:采集昨日产生的数据,比如新闻,需要避免数据重复,因为新闻都是按照发布时间逆序排列的,所以只需根据新闻发布时间进行过滤,当发现采集到比昨天更早的数据时关闭爬虫。可以在直接spider、pipeline和downloaderMiddlewares中关闭爬虫在spider中时在方法里直接写self.crawler.engine.close_spider(self, 'respon...

2018-07-23 11:41:39

Airflow1.8 分布式工作流平台搭建

版本信息:python 2.7.15airflow==1.8.0SQLAlchemy==1.1.18flower==0.9.2其中SQLAlchemy的版本如果是1.2.x版本会在创建用户是报错,[root@localhost ~]# python2 create_user.py [2018-07-18 18:51:09,336] {__init__.py:57} INFO...

2018-07-19 19:35:40

简单验证码识别

使用模块: pytesseract依赖: tesseract-ocr和语言包在不经过额外训练的情况下可以使用pytesseract可以识别简单的验证码,比如常见的数字、字母验证码。类型一:此类验证码只需使用Image.convert进行简单灰度化然后就识别了,convert图片格式转化举例: im = Image.open('image.png') im...

2018-07-18 15:32:51

多次加密

照常使用fiddle抓登录请求,发现传的参数被加密:于是使用提交的参数在fiddler中全局搜索,经过反复查找,看见加密提示: 直接有提示说这是密码加密部分,于是全局搜索setPwdValue,找到加密部分:经过分析发现加密部分只使用了下面部分: encodeMd5Pwd: function(e) { var t = hex_md5, n = "";...

2018-07-16 18:56:59

自定义base64编码加密

这次是自定义base64加密,一看是看到base64时我还用python自带的base64进行假面,发现加密结果不一样,最后就按照js一步步用python实现了首先登录,发现密码被加密了:于是查看是那段代码发起的这个请求:于是找到了加密部分:以下为base64全部代码:/** * * Base64 encode / decode * 自定义base64编码*/ function B...

2018-07-16 16:51:52

RAS加密 - 二

这次遇到的登陆加密着实费了些功夫,我都想着用phantomjs来解决登陆然后拿到cookies了,这次使用了fiddler抓包了首先登陆时发现密码加密了,还多了些参数:在fiddler全局搜索guid,发现是上一个请求里的:接着找密码加密的部分:一般来说加密部分都在自己写的js里,所以就不看jquery开头的部分,点击VM919.formatted:74:找到了加密的部分,我这是使用了断掉调试,可...

2018-07-16 16:13:28

RAS加密

查看账号提交请求,发现密码不是明文:同样只在浏览器上查看请求,登录前获取提交用户账号的请求,查看是有那行代码发起的:找到密码加密过程,发现使用了res加密:可以直接在console上获取标准格式的公钥:也可以直接用:from cryptography.hazmat.primitives.asymmetric import rsaimport base64from Crypto.Cipher i...

2018-07-16 13:22:53

md5加密

这次不在使用fiddler抓包,直接使用浏览器的F12调试工具,这样可以使用Network面板里的Initiator查看到登陆请求是由那个对象或请求发出的,从而更快定位到加密的js代码。登陆前按F12打开调试窗口,勾选 Preserve log,这样可以保留登陆跳转前的请求记录,然后找到提交账号信息的请求,鼠标移到该请求的Initiator列就可以看到触发该请求方法所在的行:一般情况下,加密的步骤...

2018-07-16 11:56:44

js生成其他登陆参数

同样使用fiddler抓包,找到登陆那个请求:可以看到这个请求参数中有一个LoginKey的参数,然后先按照LoginKey的值全局搜索,结果没找到,于是按照LoginKey为关键字搜索找到好几个:最后一个是登陆请求,于是查看其他几个,发现基本都是js文件,就想到是js生成的,经过研究发现比较简单:上图是一个文件,方便观察,LoginKey是guid()生成的,而guid函数调用了s4(),s4里...

2018-06-14 19:08:15

获取登陆所需的其他参数

这样的登陆获取的参数类型比较多,但基本都是登陆前页面里面的数据,全局搜索一下就可以找到。这里就举一个我常见的。同样登陆前开fiddler抓包,登陆后全局搜索:可以看到登陆提交的参数贼多然后随便复制一个值90A550F9,再次全局搜索看到了两个高亮,一个是登陆时提交的,一个就是产生的页面了在第一请求里搜索一下就可以看见那个值了,其他参数同理可得。于是可以写代码了self.session = self...

2018-06-14 18:08:45

获取登陆的实际地址

这是一款app,同样使用fiddler进行抓包,抓包之前需要配置手机代理,可自行找教程。抓包前可以禁用其他app的wifi流量,这样确保所有请求都是该app发出的,当然fiddler只能抓取HTTP/HTTPS,如果要抓取TCP/UDP的需要WireShark。当然这款app可以使用fiddler抓取。在手机上登陆后,按用户名全局搜索,如下图( ⊙ o ⊙ )!高亮咋没有了,算了,将就着看吧,选中...

2018-06-14 17:43:41

正常get或post提交账号密码

登陆前打开fiddler,进行抓包,当然你需要先配置浏览器代理。在点击登录前可以使用快捷键Ctrl+x清空fiddler抓取记录,这样可以更好的找到登陆的请求。同样你也可以使用fiddler的过滤功能,如下图:至于如何确定那个是登陆的请求,一般使用Ctrl+f查找某些关键字,如用户名、密码下图为一般登陆请求,使用post请求,用户名和密码为明文提交如下图为登陆的请求头和响应头信息,可见响应头中有s...

2018-06-14 17:11:18

个人总结:曾经遇到过的不同登陆

由于个人公司行业原因,接触到的网站类型单一,所以提到的登陆方式应该不全。以下提到的所有类型将会在之后的文章里详细记录。 正常get或post提交账号密码 登录前获取其他参数     获取登陆的实际地址     获取登陆所需的其他参数     js生成其他登陆参数 登陆参数加密         md5加密         多次加密         RAS加密 一 二...

2018-06-14 16:35:01

python解析WCF协议中application/msbin1格式数据

整理了一下之前遇到的数据格式转换的问题,供他人参考。一次使用Fiddler抓包时,发现数据乱码:请忽略WCF Binary按钮,这是后来装的插件,在此之前对网站调试时,右键显示:搜索后知道这是silverlight应用的WCF协议是微软的(Windows Communication Foundation),使用了application/msbin1格式的数据,然后关键字msbin1,找到:java...

2018-02-24 16:47:28

一次软件爬取记录

昨天终于把成功爬取一个gps软件,这里记录一下过程。起初,使用Fiddler偶然发现它的请求是这样的于是,点击出发请求,发现果然使用http协议,先查看头信息,没有cookies,使用:POST http://*****/page/webservices/TRWebService.asmx HTTP/1.1User-Agent: Mozilla/4.0 (compati

2018-01-30 15:07:15

python内置对象

数字,加减乘除等操作字符串 ,拼接,索引、重复(*)、大小写,切片,编码等列表 list ,索引、切片、拼接、增减、排序sort、反转reverse、嵌套。列表解析  [iter + 1 for iter in  range(10) if iter > 3 and iter % 3]字典 dict  解析{i:i+1 for i in range(10)}、嵌套、索引、dict内部存放

2016-11-21 20:37:50

django+ mysql 数据库建立

settings.py设置连接mysql数据库DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'imooc', 'USER':'root', 'PASSWORD':'', 'HOST': 'localhos

2016-09-12 18:07:54
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!