生成新冠疫苗接种趋势图-相关爬虫技术和法律学习
文档说明:只记录关键地方; 发布时间: 2022-11-01
缘由:
想看疫苗接种趋势图、每日疫苗接种量,我要去哪里找呢?
奈何公开的渠道没有找到!自己做一个呗
数据来源:
(信息来自国家卫生健康委员会官方网站)
先睹为快
我要怎么得到数据呢?用什么展示呢?
搜索一番
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 };
结果展示
没用啥技术,实际就是浏览器扩展完成数据获取,然后显示出来就完事了
参考技术文档
Headless browser detection
- Getting Started with Headless Chrome
- chrome-headless-test
- detect-headless
- detect-headless
- headless-chrome
参考文档
- 浏览器指纹技术
- python基础知识
- 正则表达式 - 语法
- pyppeteer从基本使用到启发式爬虫
- WEB2.0启发式爬虫实战-猪猪侠-20180616.pdf
- WEB 2.0 启发式爬虫实战|阿里云猪猪侠
- puppeteer-core
- puppeteer
- pyppeteer
- playwright-python
- DevTools Protocol
- github devtools-protocol
- chrome-remote-interface
- Headless Chromium
- Headless Chrome
- chromium自定义启动参数 和 启用远程调试
- 快速下载chromium源码
- 定制自己的chromium浏览器,linux版
- 请问天眼查,企查查等数据是怎么来的
- cheatengine
- kali tools
- 先知社区
- 谷歌翻译不可用有哪些解决办法?
- 中华人民共和国行政区划代码
- nali
- 什么是群控?哪些群体能用到群控?
- 爬虫违法违规案例汇总
- 11亿条用户数据泄露,两男子用爬虫技术非法获利34万
法律法规
- 立法禁止非法使用网络地址自动切换系统
- 中华人民共和国反电信网络诈骗法
- 工信部印发《网络产品安全漏洞收集平台备案管理办法》
- 中华人民共和国网络安全法
- 中华人民共和国反电信网络诈骗法
- 帮信罪
- 破坏计算机信息系统犯罪
- 中华人民共和国个人信息保护法
- 互联网信息服务管理办法
无论是安装、使用GOIP设备
还是帮忙收购电话卡、银行卡
收集国内用户号码
都是违法犯罪行为
《中华人民共和国刑法》规定,对于明知他人利用信息网络实施诈骗行为的情况下,仍架设通信类设备为他人提供便利的人员,涉嫌构成帮助信息网络违法罪,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金。
第十四条 任何单位和个人不得非法制造、买卖、提供或者使用下列设备、软件:
(一)电话卡批量插入设备;
(二)具有改变主叫号码、虚拟拨号、互联网电话违规接入公用电信网络等功能的设备、软件;
(三)批量账号、网络地址自动切换系统,批量接收提供短信验证、语音验证的平台;
(四)其他用于实施电信网络诈骗等违法犯罪的设备、软件。
反电信网络诈骗法
电信业务经营者、互联网服务提供者应当采取技术措施,及时识别、阻断前款规定的非法设备、软件接入网络,并向公安机关和相关行业主管部门报告。
《网络安全法》第二十六条,“开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定。”
不得制作、复制、查阅和传播下列信息:
(一)煽动抗拒、破坏宪法和法律、行政法规实施的;
(二)煽动颠覆国家政权,推翻社会主义制度的;
(三)煽动分裂国家、破坏国家统一的;
(四)煽动民族仇恨、民族歧视,破坏民族团结的;
(五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
(六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
(七)公然侮辱他人或者捏造事实诽谤他人的;
(八)损害国家机关信誉的;
(九)其他违反宪法和法律、行政法规的。
任何单位和个人不得非法制造、销售、提供或者 使用可以实现下列功能的设备、软件:(三)批量账号、网络地址自动切换系统
帮信罪了解一下
[温馨提示] 根据《中华人民共和国反电信网络诈骗法》第三十一条规定,任何单位和个人不得非法买卖、出租、出借电话卡、物联网卡、电信线路、短信端口、银行账户、支付账户、互联网账号等,不得提供实名核验帮助。