06. 分布式爬虫、布隆过滤器

一、布隆过滤器

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


4 计算机最小单位:比特位   8个比特位是1byte
  utf-8: abcdefg-----7bytes----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 借助于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

三、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"

四、手机爬虫(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去调用---》传入参数---》得到加密结果
  -动态调试---》看汇编

五、抓包工具

1、windows: fiddler
2、mac: charles
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值