一、网页分析
豆瓣的登录页面如上,如果你是第一次登陆是不需要输入验证码的,当多次登录失败后将出现验证码。
点击登录并抓包,得到如下的参数
其中form_email和form_password分别是用户名和密码,captcha-solution是输入的验证码, captcha-id为验证码id, 在对登录网址进行get请求时可以得到
这样我们就能大概有了一个思路:
首先get请求登录页面, 若有验证码则保存本地, 并提取出captcha-id, 之后post请求登录页,完成登录过程, 若无验证码则直接发送post请求。整体流程没有难度, 所有字段都是明文,没有任何加密。
二、代码实现
scrapy的项目结构如下:
编写start.py脚本用于启动scrapy:
1 | from scrapy import cmdline |
主要代码db.py
1 | import scrapy |
需要注意的是,必须要在setting中设置USER_AGENT, 否则访问登录页将出现403错误。