1、熟悉 Python 爬虫常用库及相关知识。如 playwright、requests、selenium 、正则。
2、了解 mongodb、mysql、redis 基础操作。
3、熟悉 ubuntu 基础操作,包括:定时任务、一次性任务、修改文件权限及所属、用户与组管理、软件源码安装原理等。
4、熟悉常见反爬措施及应对。如:UA、封IP、封账号、简单验证码。
5、了解JS逆向。如:加密函数定位方式(搜索、hook)、常用加密特征及如何在项目中验证、特定安全产品等特征及解决方式(瑞数4、瑞数5、jsl、Akamai)。
6、了解Docker 部署基本操作。
7、熟悉办公自动化。
项目名称:热榜电影
1、明确所需数据种类、数量、入库格式等要求
2、F12分析网络请求定位接口,禁用就手动打开
3、遇到多种debugger。一个鼠标右键不在此处暂停,另一个是eval执行的,hook eval,如果 arg.indexof('debugger') 就return True,否则返回原函数逻辑。
4、定位数据接口。能正常调试代码后查看网络,清空cookie后刷新页面,然后搜索数据中特殊的数据来定位数据接口。
5、确认是否有需逆向的参数。curl格式复制之前定位到的包,用工具转requests直接运行请求,返回没问题,不带cookie返回数据也没问题,然后挨个注释headers中的奇怪数据。最终发现无需逆向。
6、scrapy爬取、数据去重。item定好数据的格式;数据先md5,创个列表放md5值,不在列表内就存数据并把md5值放入列表。
7、IP池的解决。开启scrapy EXTENSIONS,扩展的启停与signals.engine_started、signals.spider_closed信号连接。扩展程序隔一段时间自动从付费API提取代理IP放入列表,每次请求从IP池随机获取IP。
8、部署爬虫。mac是v8架构,我的云服务器是v4所以将项目压缩上传到服务器,在服务器用docker建立镜像。编写Dockerfile FROM python:3.9 COPY . . RUN pip install -r requirements.txt CMD scrapy crawl xx项目。 运行时 -v 指定VOLUME实现持久化存储。数据可在/var/lib/docker/volumes/指定的卷名/_data目录下找到。
9、微信通知。借助pushplus向微信发送消息,在scrapy pipeline.py 的spider_closed函数添加执行python的代码,该代码会向pushplus提供的API发送requests请求,然后我的微信会得到消息推送。
角色 | 职位 |
负责人 | 安全服务 |
队员 | 后端工程师 |