生成新冠疫苗接种趋势图-相关爬虫技术和法律学习

文档说明:只记录关键地方; 发布时间: 2022-11-01

缘由:

想看疫苗接种趋势图、每日疫苗接种量,我要去哪里找呢?

奈何公开的渠道没有找到!自己做一个呗

数据来源:

http://www.nhc.gov.cn/xcs/xxgzbd/gzbd_index.shtml

(信息来自国家卫生健康委员会官方网站)

先睹为快

我要怎么得到数据呢?用什么展示呢?

搜索一番


  1. 趋势图使用echarts展示

  2. 数据怎么来呢?怎么快速得到数据?用什么工具可以实现?
  

心路历程:


    1. 手工复制粘贴数据,复制粘贴了15天的数据,发现,这么不行阿,太慢了!

    2. 开始之前先用  curl -v 直接请求,看请求头。接着 用程序直接请求地址,用正则匹配内容,大就都是这么操作的

    3. 好家伙,开始还能用,多试几次,body直接不返回信息了!(通过查看响应头,发现被 waf 拦截了);下面怎么办?

    4. 搜索,waf 用什么拦截是什么原理?用了浏览器指纹、请求速度、UserAgent、浏览器headless模式、人的行为特征等等,来判断是不是机器人!

    5. 通过搜索了解到各种爬虫技术:  
           python3 requests、
           BeautifulSoup、
           scrapy、
           urllib.request、
           puppeteer 、
           pyppeteer 、
           DevTools Protocol、
           分得清 浏览器,v8引擎,JavaScript,ECMAScript到底是什么关系?
           群控技术、
           人力分布式爬虫、 找人力资源,看网页,人工录入,人工便宜
           把渗透技术用于爬内容、  直接读取内存行不行?
           录屏 OCR 解决、把并发间隔整形成正态分布试试 (看到这里,我就想起了,游戏里的物理外挂)
           把社会社会工程学用于信息爬取 
           更高级的的做法是不爬数据,而是引导用户,让用户主动提交信息
           搜索引擎,为什么能抓取动态内容?直接用C++实现浏览器的功能,不行吗?
           把爬虫伪装成搜索引擎
           把蜜罐技术、深度学习技术用于反爬
           真的存在去中心化的网络吗? 请问互联网起源那里--美军英特网民用化。谁是网管,谁就是中心,真急眼了,就拔网线。去中心化是个伪命题

    6. 了解了那么多技术,最有效的办法--分布式人工爬虫+网联云控技术
         人工便宜
             因为人工便宜,按照文档,照着文档就能弄,不需要技术含量的工作。
   
             这也就能解释了 刷单、刷播放量、刷排名、刷热搜、刷投票,怎么回事! 分布式真人操作
         
             多雇点人,人肉爬,法律上很安全 (人力不值钱)

         网联云控
             还有一个群控技术,这个更恐怖,把装有群控技术软件的手机发给用户(用户并不知情),通过服务器远程操作分布在全国各地的手机,让手机干什么,就干什么 !

            (例子: 手机植入后门,默默的扣费;手机自动点赞,评论。还能自动发短信)

             为啥我知道,因为我是受害者, 投诉无门 
                 (你可以看看自己的短信详单,你会发现,你的短信详单里,发送方主叫号码都不显示了,这样你也就找不到投诉对象)

             同时因投诉,被某些服务商拉入了黑名单,黑名单解除期限至 2029年
                 (导致燃气公司,给我发的短信,我收不到,原因是:燃气公司的短信服务商,是我投诉过的服务商)


   7. 研究了那么多,发现爬虫挺有意思的。 重点来了,请看下面: 
           面向牢饭编程
           爬虫写的好,牢饭吃到老
           反爬团队和爬虫团队可能是同一拨人(不知进攻如何防守)
           爬取个人隐私身份信息是违法的

           任何单位和个人不得非法制造、销售、提供或者使用网络地址自动切换系统。

           中华人民共和国网络安全法
           中华人民共和国反电信网络诈骗法  
           帮信罪
          《网络产品安全漏洞收集平台备案管理办法》
           非法破坏计算机系统罪
           

    12. 单独看这几条:

           第十四条 任何单位和个人不得非法制造、买卖、提供或者使用下列设备、软件:

              (一)电话卡批量插入设备;

              (二)具有改变主叫号码、虚拟拨号、互联网电话违规接入公用电信网络等功能的设备、软件;

              (三)批量账号、网络地址自动切换系统,批量接收提供短信验证、语音验证的平台;

              (四)其他用于实施电信网络诈骗等违法犯罪的设备、软件。

          反电信网络诈骗法
                 电信业务经营者、互联网服务提供者应当采取技术措施,及时识别、阻断前款规定的非法设备、软件接入网络,并向公安机关和相关行业主管部门报告。

          《网络安全法》第二十六条,“开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定。”


           不得制作、复制、查阅和传播下列信息:
                (一)煽动抗拒、破坏宪法和法律、行政法规实施的;
                (二)煽动颠覆国家政权,推翻社会主义制度的;
                (三)煽动分裂国家、破坏国家统一的;
                (四)煽动民族仇恨、民族歧视,破坏民族团结的;
                (五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
                (六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
                (七)公然侮辱他人或者捏造事实诽谤他人的;
                (八)损害国家机关信誉的;
                (九)其他违反宪法和法律、行政法规的。
           任何单位和个人不得非法制造、销售、提供或者 使用可以实现下列功能的设备、软件:(三)批量账号、网络地址自动切换系统

浏览器指纹:


        你的电脑所在的时区和当前时间

        你的IP地址和大概的地理位置

        电脑屏幕尺寸和分辨率

        你在使用什么浏览器

        你在使用什么插件

        页面显示了多长时间

        进行了多少次按键操作、鼠标点击和滚轮操作

        还有其他一些我们不太了解的东西

例子:  通过显卡,大致知道用什么配置的

        wendor:Google Inc. (Intel)
        renderer:ANGLE (Intel, Mesa Intel(R) HD Graphics 4600 (HSW GT2), OpenGL 4.6)
        deviceMemory: 8
        cpuCore: 8
        platform: Linux x86_64
        userAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
        language: zh-CN
        date: Tue Nov 01 2022 20:20:59 GMT+0800 (中国标准时间)
        height: 1080
        width: 1920
        innerheight: 980
        innerwidth: 611
        colorDepth: 24
        pixelDepth: 24
        orientation: { angle: 0, type: landscape-primary }
        availHeight: 1053
        availLeft: 74
        availTop: 27
        availWidth: 1846

        webRTC: 能直接知道你内网IP 

最后来个最简单的落地方案:

为了批量获取数据,实验了很多办法,最后还是猪猪侠给的思路办法最好用 (WEB2.0启发式爬虫)

综合来看,我就抓取那么简单的数据,写个扩展就行了。(写个浏览器扩展就搞定了)

    1.  正则+javascript脚本从单个页面把数据提取出来
    2.  javascript脚本、浏览器扩展、浏览器远程调试端口 控制页面往上一页、往下一页
    
    3.  总结: 页面注入javascript脚本,获取数据,并把数据传递到指定的地方

    4.  大致方法:

         方法一: 浏览器扩展就能实现全部功能

         方法二: 应用程序连接浏览器运程调试端口,推荐: puppeteer  pyppeteer (实现devtools-protocol的应用程序都行)

获取数据代码

代码就这么一点,其他代码,主要是控制性代码,比如上一页,下一页,数据回传保存
比如在:http://www.nhc.gov.cn/jkj/s7915/202210/f97c250b492d4f508841d06e97fbb6fa.shtml 页面执行这个代码,就能获取到数据

let report_date_reg = /(\d{4})年(\d{1,2})月(\d{1,2})日/;
let report_number_reg = /疫苗([\d|\.|\s]+)万剂次/;
let report_content_reg = /截至(.*?)剂次。/;
let release_date_reg = /(\d{4}-\d{1,2}-\d{1,2})/;

let get_single_gzbd_data = () => {
  let content_box = document.querySelector("#xw_box");
  let announcement_content = content_box.innerText.trim();
  console.log(announcement_content);
  let announcement_date = report_date_reg.exec(announcement_content);
  console.log(announcement_date);
  let day =
    announcement_date[1] +
    "-" +
    announcement_date[2] +
    "-" +
    announcement_date[3];

  let release_day_content = document
    .querySelector(".list .source>span")
    .innerText.trim();
  let release_day = release_date_reg.exec(release_day_content)[1];
  console.log(release_day);

  return {
    url: location.href,
    release_day: release_day,
    deadline_day_f: day,
    deadline_day: announcement_date[0],
    total: report_number_reg.exec(announcement_content)[1].trim(),
    announcement_content: report_content_reg
      .exec(announcement_content)[0]
      .trim(),
  };
};

export { get_single_gzbd_data };


结果展示

没用啥技术,实际就是浏览器扩展完成数据获取,然后显示出来就完事了

参考技术文档

  1. 图表显示chart
  2. 浏览器扩展开发

Headless browser detection

  1. Getting Started with Headless Chrome
  2. chrome-headless-test
  3. detect-headless
  4. detect-headless
  5. headless-chrome

参考文档

  1. 浏览器指纹技术
  2. python基础知识
  3. 正则表达式 - 语法
  4. pyppeteer从基本使用到启发式爬虫
  5. WEB2.0启发式爬虫实战-猪猪侠-20180616.pdf
  6. WEB 2.0 启发式爬虫实战|阿里云猪猪侠
  7. puppeteer-core
  8. puppeteer
  9. pyppeteer
  10. playwright-python
  11. DevTools Protocol
  12. github devtools-protocol
  13. chrome-remote-interface
  14. Headless Chromium
  15. Headless Chrome
  16. chromium自定义启动参数 和 启用远程调试
  17. 快速下载chromium源码
  18. 定制自己的chromium浏览器,linux版
  19. 请问天眼查,企查查等数据是怎么来的
  20. cheatengine
  21. kali tools
  22. 先知社区
  23. 谷歌翻译不可用有哪些解决办法?
  24. 中华人民共和国行政区划代码
  25. nali
  26. 什么是群控?哪些群体能用到群控?
  27. 爬虫违法违规案例汇总
  28. 11亿条用户数据泄露,两男子用爬虫技术非法获利34万

法律法规

  1. 立法禁止非法使用网络地址自动切换系统
  2. 中华人民共和国反电信网络诈骗法
  3. 工信部印发《网络产品安全漏洞收集平台备案管理办法》
  4. 中华人民共和国网络安全法
  5. 中华人民共和国反电信网络诈骗法
  6. 帮信罪
  7. 破坏计算机信息系统犯罪
  8. 中华人民共和国个人信息保护法
  9. 互联网信息服务管理办法



            无论是安装、使用GOIP设备

            还是帮忙收购电话卡、银行卡

            收集国内用户号码

            都是违法犯罪行为


            《中华人民共和国刑法》规定,对于明知他人利用信息网络实施诈骗行为的情况下,仍架设通信类设备为他人提供便利的人员,涉嫌构成帮助信息网络违法罪,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金。


           第十四条 任何单位和个人不得非法制造、买卖、提供或者使用下列设备、软件:

              (一)电话卡批量插入设备;

              (二)具有改变主叫号码、虚拟拨号、互联网电话违规接入公用电信网络等功能的设备、软件;

              (三)批量账号、网络地址自动切换系统,批量接收提供短信验证、语音验证的平台;

              (四)其他用于实施电信网络诈骗等违法犯罪的设备、软件。
           

          反电信网络诈骗法
                电信业务经营者、互联网服务提供者应当采取技术措施,及时识别、阻断前款规定的非法设备、软件接入网络,并向公安机关和相关行业主管部门报告。

          《网络安全法》第二十六条,“开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定。”


           不得制作、复制、查阅和传播下列信息:
                (一)煽动抗拒、破坏宪法和法律、行政法规实施的;
                (二)煽动颠覆国家政权,推翻社会主义制度的;
                (三)煽动分裂国家、破坏国家统一的;
                (四)煽动民族仇恨、民族歧视,破坏民族团结的;
                (五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
                (六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
                (七)公然侮辱他人或者捏造事实诽谤他人的;
                (八)损害国家机关信誉的;
                (九)其他违反宪法和法律、行政法规的。


           任何单位和个人不得非法制造、销售、提供或者 使用可以实现下列功能的设备、软件:(三)批量账号、网络地址自动切换系统
帮信罪了解一下

[温馨提示] 根据《中华人民共和国反电信网络诈骗法》第三十一条规定,任何单位和个人不得非法买卖、出租、出借电话卡、物联网卡、电信线路、短信端口、银行账户、支付账户、互联网账号等,不得提供实名核验帮助。

posted @ 2022-11-01 20:04  jingjingxyk  阅读(73)  评论(0编辑  收藏  举报