zoukankan      html  css  js  c++  java
  • 爬虫之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
     
    具体使用,搜一下,网上有教程

     

     

     

     

  • 相关阅读:
    openfire 部署后报错: java.lang.IllegalArgumentException: interface xx is not visible from class loader
    Calendar
    list 移除值
    fastjson 返回json字符串,JSON.parse 报错
    tomcat 跨域
    spring boot 笔记
    Mybatis处理列名—字段名映射— 驼峰式命名映射
    hadoop的NullWritable
    CentOS中用Nexus搭建maven私服,为Hadoop编译提供本地镜像
    CentOS中配置xrdp,通过微软远程桌面访问CentOS桌面
  • 原文地址:https://www.cnblogs.com/usherwang/p/14470910.html
Copyright © 2011-2022 走看看