登录流程
一级目录
二级目录
三级目录
前言
本系列介绍了如何使用DrissionPage库自动化操作,包括模拟搜索、登录验证、动态页面滑动抓取,以及从商品列表中提取标题、价格等信息,详细展示了如何完成京东商品数据及评论数据的抓取,本篇文章只介绍登录相关
1、流程分析
打开京东登录页面发现有三种登录方式,如下图
这里只介绍短信登录
和密码登录
两种方式,其实两种登录方式流程基本一致,短信验证
多了一个验证码处理的步骤,我们挨个介绍两种登录方式,因为两种方式都涉及到了滑块验证
,所以就线介绍下滑块验证的流程
1.1 滑块验证
1.1.1 识别滑块距离

判断出现滑块后,直接用DrissionPage
获取背景图片
和滑块
的base64字符串,这里有两个小细节需要注意一下,一是两种登录方式的图片背景CSS结构不同,二是滑块不是100%出现,需要代码里判断
python
bk_selector = 'css:#content div.JDJRV-bigimg > img'
slide_selector = 'css:#content div.JDJRV-smallimg > img'
bk_base64 = page.ele(bk_selector).attr('src')
slide_base64 = page.ele(slide_selector).attr('src')

对 base64
字符串解码保存为图片,使用 链接: ddddocr 识别滑块缺口距离
,这种方式得到的距离值可能需要微调
滑块图
背景图
python
det = ddddocr.DdddOcr(det=False, ocr=False)
with open('target.png', 'rb') as f:
target_bytes = f.read()
with open('background.png', 'rb') as f:
background_bytes = f.read()
res = det.slide_match(target_bytes, background_bytes)
print(res)
1.1.2 生成滑动轨迹
获取到滑块缺口距离后,就可以生成滑块轨迹了
python
def get_tracks(self, distance):
"""滑块的运动轨迹"""
value = round(random.uniform(0.55, 0.75), 2)
v, t, sum = 0, 0.3, 0
plus = []
mid = distance * value
while sum < distance:
if sum < mid:
a = round(random.uniform(2.5, 3.5), 1)
else:
a = -round(random.uniform(2.0, 3.0), 1)
s = v * t + 0.5 * a * (t ** 2)
v = v + a * t
sum += s
plus.append(round(s))
reduce = [-6, -4, -6, -4]
return {'plus': plus, 'reduce': reduce}
1.1.3 模拟拖动滑块
这里直接给出代码
python
slide_ele = page.ele(slide_btn_selector)
page.actions.hold(slide_ele) # 此方法用于按住鼠标左键不放,按住前可先移动到元素上
# 使鼠标相对当前位置移动若干距离
for track in tracks['plus']:
page.actions.move(offset_x=track, offset_y=round(random.uniform(1.0, 3.0), 0), duration=.05)
time.sleep(random.uniform(0.5, 0.7))
page.actions.release(slide_ele) # 此方法用于释放鼠标左键,释放前可先移动到元上。
我也是参考了模拟滑块滑动,感兴趣的可以去阅读一下
1.2 短信登录
1.1.1 滑块验证
1.1.2 短信验证
滑块验证通过之后就是验证码处理了,这里就不得不提到SmsForwarder-短信转发器
,借助这款工具可以将登陆接收到的短信上传到REDIS
,从而实现验证码的自动化处理。另外SmsForwarder
不仅只转发短信,还可以监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、企业微信应用消息、飞书群机器人、飞书企业应用、邮箱、bark、webhook、Tele****机器人、Server酱、PushPlus、手机短信等。
想了解更多详情请跳转SmsForwarder-短信转发器
1.3 密码登录
密码登录流程和短信登录流程大体一致,相比短信登录少了一个验证码处理,其他都是相同的
小结
京东登录滑块的风控策略宽松的有故意放水的嫌疑,详情页的滑块就非常难搞,同志们有兴趣的滴滴我一起探讨,平台比较敏感,这里就不放源码了,后续会更新详情页和评论的采集