爬虫之js逆向、手机爬虫、分布式爬虫及布隆过滤器等相关内容-139

0 布隆过滤器


1 bloomfilter:是一个通过多哈希函数映射到一张表的数据结构,能够快速的判断一个元素在一个集合内是否存在,具有很好的空间和时间效率
2 数组:连续存储的内存空间:取值,改值效率高;;;插入值,删除值效率低
3 链表:不连续的内存空间,可变长:取值,改之效率低;;;插入删除效率高
3 你现在看到的所有数据结构,本质就是数字,字符串,布尔,数组,链表(列表,元组,字典,集合)


4 计算机最小单位:比特位   8个比特位是1byte
 utf-8abcdefg-----7个bytes----》56个比特位
 
 
5 python中使用布隆过滤器(不同语言中都会有)
pip3 install pybloom_live
# from pybloom_live import ScalableBloomFilter
#
#
# bloom = ScalableBloomFilter(initial_capacity=100, error_rate=0.00001, mode=ScalableBloomFilter.LARGE_SET_GROWTH)
#
# url = "www.cnblogs.com"
#
# url2 = "www.liuqingzheng.top"
#
# bloom.add(url)
#
# print(url in bloom)
#
# print(url2 in bloom)


from pybloom_live import BloomFilter
# 10来个
bf = BloomFilter(capacity=1000)
url='www.baidu.com'
bf.add(url)

print(url in bf)

print("www.liuqingzheng.top" in bf)





# 使用redis的布隆过滤器
使用方式见博客

 

1 分布式爬虫

1 借助于scrapy-redis

2 在scrapy的配置文件中修改
 # 把调度器替换成scrapy-redis的调度器
 SCHEDULER = "scrapy_redis.scheduler.Scheduler"
 # 去重规则,使用scrapy-redis写的类
 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
 # 爬取的起始地址的key
 # REDIS_START_URLS_KEY = 'cnblogs:start_urls'
 # 不写就是连本地的6379
 # REDIS_HOST = 'localhost'
 # REDIS_PORT = 6379
 ITEM_PIPELINES = {
  'scrapy_redis.pipelines.RedisPipeline': 300,
}
 
3 修改爬虫
from scrapy_redis.spiders import RedisSpider
class CnblogsSpider(RedisSpider):
   name = 'cnblogs_redis'   # 爬虫名字(不能重复)
   allowed_domains = ['www.cnblogs.com'] # 允许的域(只爬取当前域下的地址)
   redis_key = 'myspider:start_urls'
   
4 部署在不同的机器上
连接到redis上,设置起始地址
lpush myspider:start_urls http://www.cnblogs.com

 

2 js逆向(破解知乎)

1 登陆把用户名密码完全加密,使用post提交到后台,后台解密,得到用户名密码,再去校验

client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&
grant_type=password&
timestamp=1611894781045&
source=com.zhihu.web&
signature=bbcfda13b3f583657e830ec2643f15b4d7ff396e&
username=%2B8618611453110&
password=xinyuan%40378533872&
captcha=&lang=cn&utm_source=&
ref_source=other_https%3A%2F%2Fwww.zhihu.com%2Fsignin%3Fnext%3D%252F"

client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password&timestamp=1611894925688&source=com.zhihu.web&signature=d5741e625bc30d49055645ed9f589f760581eea0&username=%2B8618953675221&password=lqz12345&captcha=&lang=cn&utm_source=&ref_source=other_https%3A%2F%2Fwww.zhihu.com%2Fsignin%3Fnext%3D%252F"

 

 

3 手机爬虫(appnium)

1 手机app数据(前端)----》http---》客户端类型,手机
2 安卓,ios,大前端(写了一套,运行在不同的平台)
3 有时候,你去爬网站不好爬,尝试爬一下手机
4 安卓,ios,解析出请求(抓包工具)
再写代码,完全一样(scrapy)--》返回来的基本上是json格式
 
5 第二种:appnium---》用代码操作操作手机--》跟selenium很像---》效率低,速度慢

 
6 逆向(用抓包工具抓包的数据是加密格式),
-移动端的安卓代码中写的---》java--》某个加密函数
 -安卓app---》加壳---
 
 -普通:java---》xx.jar
 -安卓:java---》xx.dex --编译以后的--》反编译工具
 -安卓改之理
 
 
 -反编译apk成本比较低,网上有现成的软件,傻瓜式操作(java写的加密函数---》很容易被看到)
 -c语言写加密函数---》xx.so文件---》在app里用java去调用---》传入参数---》得到加密结果
 -动态调试---》看汇编

 

4 抓包工具

1 windows:fiddler
2 mac:charles
 
具体使用,搜一下,网上有教程

 

 

 

 

posted @ 2021-03-02 20:01  投降输一半!  阅读(168)  评论(0编辑  收藏  举报