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 密码登录

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

小结

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

相关推荐
阿梦Anmory11 分钟前
Ubuntu配置代理最详细教程
linux·运维·ubuntu
北京耐用通信17 分钟前
破解AGV多协议互联难题:耐达讯自动化Profinet转Devicenet网关如何实现高效协同
人工智能·科技·物联网·网络协议·自动化·信息与通信
呉師傅25 分钟前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
heartbeat..28 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊1 小时前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
消失的旧时光-19431 小时前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
小天源2 小时前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti
梦帮科技2 小时前
OpenClaw 桥接调用 Windows MCP:打造你的 AI 桌面自动化助手
人工智能·windows·自动化