DrissionPage采集京东系列——自动化登录

登录流程

  • 一级目录
    • 二级目录
    • 前言
    • 1、流程分析
      • [1.1 滑块验证](#1.1 滑块验证)
        • [1.1.1 识别滑块距离](#1.1.1 识别滑块距离)
        • [1.1.2 生成滑动轨迹](#1.1.2 生成滑动轨迹)
        • [1.1.3 模拟拖动滑块](#1.1.3 模拟拖动滑块)
      • [1.2 短信登录](#1.2 短信登录)
        • [1.1.1 滑块验证](#1.1.1 滑块验证)
        • [1.1.2 短信验证](#1.1.2 短信验证)
      • [1.3 密码登录](#1.3 密码登录)
    • 小结

一级目录

二级目录

三级目录

前言

本系列介绍了如何使用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 密码登录

密码登录流程和短信登录流程大体一致,相比短信登录少了一个验证码处理,其他都是相同的

小结

京东登录滑块的风控策略宽松的有故意放水的嫌疑,详情页的滑块就非常难搞,同志们有兴趣的滴滴我一起探讨,平台比较敏感,这里就不放源码了,后续会更新详情页和评论的采集

相关推荐
济6179 小时前
linux 系统移植(第二十八期)---- 运用MfgTool 工具烧写自制的烧写自制的系统系统---- Ubuntu20.04
linux·运维·服务器
太理摆烂哥9 小时前
Linux基础指令
linux·运维·服务器
昨夜见军贴06169 小时前
合规性管理的现代化实践:IACheck的AI审核如何系统提升生产型检测报告的合规水平
大数据·运维·人工智能
Doro再努力9 小时前
【Linux04】 Linux基础指令完结与Linux权限初识(一)
linux·运维·服务器
江畔何人初9 小时前
k8s中namespace与容器cgroup区别
linux·运维·云原生
草莓熊Lotso9 小时前
远程控制软件实测!2026年1月远程软件从“夯”到“拉”全功能横评
运维·服务器·数据库·人工智能
艾莉丝努力练剑10 小时前
【Linux进程控制(三)】实现自主Shell命令行解释器
linux·运维·服务器·c++·人工智能·安全·云原生
0思必得010 小时前
[Web自动化] 爬虫合规指南:从法律红线到安全实践
前端·爬虫·自动化·web自动化
中二病码农不会遇见C++学姐10 小时前
文明6 Mod制作核心组件关系解密:从XML到游戏的奇幻漂流
java·运维·服务器·游戏
asaotomo10 小时前
一款 AI 驱动的新一代安全运维代理 —— DeepSentry(深哨)
运维·人工智能·安全·ai·go