SkillAgentSearch skills...

JDMemberCloseAccount

学习python操作selenium的一个🌰 ,也是一种京东全自动退会方案

Install / Use

/learn @yqchilde/JDMemberCloseAccount
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

JDMemberCloseAccount

介绍

本项目是我学习python操作selenium的一个🌰,也是一种京东自动退会方案,用来全自动退出京东加入的所有店铺会员

声明

  1. 本项目仅限于学习研究selenium库的操作,以及一些python知识,不含收集用户信息

须知

  1. 有一定的电脑知识 or 有耐心爱折腾
  2. chrome驱动(只在chrome测试了,故只留了chrome)
  3. 操作系统(只在mac上测试了,非M1)
  4. 使用python3.x版本执行
  5. 有一定python基础知识,没有的话先去学一下,起码得会搭python环境
  6. 视频讲解-脚本如何使用

思路

项目思路

  1. 利用selenium打开退会页面

  2. 第一关:手机验证码

    1. 安卓端(以下两种任选一个用就行):

      • 利用macrodroid软件 监听,一旦监听到就立即通过HTTP请求利用websocket推送过来,由jd_wstool 工具监听并送到selenium中填写

      • 利用tasker软件 监听,同上

      • 使用方法:下载以上任一软件,导入相应的配置,并修改自己的IP为main.py程序监听的IP即可

      • 关于 taskermacrodroid 配置均在 extra 目录下

    2. ios端:

      1. 越狱机(来自@curtinlv 大佬的越狱监听短信方法,#61

        • 像安卓端一样传验证码(基本逻辑:iOS设备通过访问短信数据库,监听最新的jd验证码并传到 jd_wstool

          下载 getiOSMessages.py 传到手机上(测试Pythonista 3可以,其他软件自行研究)

          1. 填写jd_wstool 监听地址ip

            如:监听地址1: http://192.168.0.101:5201 ,填在脚本开头 ipaddr= '192.168.0.101'

          2. 运行脚本

      2. 非越狱机 (任选以下一种类型)

        首先感谢tg群的朋友@millerchen 提供的思路,具体实现方案是电脑屏幕留出一个区域用来显示手机投屏的地方(如果你电脑是Mac,无需投屏,只需要打开IMessage,并保持短信同步即可,然后OCR识别IMessage),然后打开短信列表,然后找个截图工具记一下当前需要识别的的左上角右下角坐标(最好截取那一整条短信的坐标,当然截取范围越小,识别越快),然后通过ocr工具识别数字验证码

        注意: OCR只是处理识别短信验证码并填入,不要误解为图形验证码也可以解决。如果定位不准,看一下项目目录生成的captcha_screenshot.png 图片位置在当前屏幕的哪个位置,测试识别效果gif点我查看 , 此外,坐标和电脑分辨率有关,如果分辨是是1080P,那么qq截图识别的坐标就是刚好一比一的,比我的是4k显示器,是以百分之200显示的,那所有坐标就要乘以2了

        百度ocr ( 之前用过的用户还是免费500次/天的额度,新用户调整为1000次/月的额度,调整详情参考这里)

         * 需要在config.yaml中配置如下参数:
        
         * sms_captcha.is_ocr设置为 true
        
         * sms_captcha.is_ocr.type设置为 baidu
        
         * sms_captcha.is_ocr.baidu_app_id补充完整
        
         * sms_captcha.is_ocr.baidu_api_key补充完整
        
         * sms_captcha.is_ocr.baidu_secret_key补充完整
        

        阿里云ocr ( 用户新购0元500次,后续500次/0.01元,开通地址阿里云市场)

         * 同上,需要在config.yaml中配置如下参数:
        
         * sms_captcha.is_ocr设置为 true
        
         * sms_captcha.is_ocr.type设置为 aliyun
        
         * sms_captcha.is_ocr.aliyun_appcode补充完整
        

        easyocr (免费,本地识别)

         * 同上,需要在config.yaml中配置如下参数:
        
         * sms_captcha.is_ocr设置为 true
        
         * sms_captcha.is_ocr.type设置为 easyocr
        
         * 使用时注意框选识别的范围只显示6位数字验证码(现支持一整条完整短信的区域,当然范围越大识别速度也会相应增加,区域扩大是为了优化某些用户短信验证码6位数字每次位置不一致问题)(毕竟免费开源,识别条件有点苛刻)
        

        百度翻译 (免费额度 10000次/每月,开通地址 百度翻译开放平台)

        开通教程:

        1. 打开 百度翻译开放平台 注册个人开发者并实名认证

        2. 打开 开发者信息 查看appid 和 秘钥

        3. 打开 服务选择 选择图片翻译服务开通

        配置信息:

         * 同上,需要在config.yaml中配置如下参数:
        
         * sms_captcha.is_ocr设置为 true
        
         * sms_captcha.is_ocr.type设置为 baidu_fanyi
        
         * sms_captcha.is_ocr.baidu_fanyi_appid补充完整
        
         * sms_captcha.is_ocr.baidu_fanyi_appkey补充完整
        
  3. 第二关:图形验证码(任选以下一种类型,更新文档时,验证方式为滑块验证码或点选式验证码,滑块已内置,仅需个人解决点选式

    1. 本地识别

      • 2022-06-06更新文档:之前的本地识别皆已失效,需重新训练
    2. 收费的打码平台

      • 图形验证码用 超级鹰打码 ,费用是1块=1000积分,一次扣15积分

      • 图形验证码用 图鉴打码 ,费用是1块=1积分,一次扣0.01积分

如何使用本项目

一、下载项目以及配置浏览器驱动

注意: 以下关于python3pip3 命令只代表python3.x环境,故如果电脑python环境已是3.x,可直接用pythonpip代替

  1. 克隆到本地或下载项目压缩包到本地

    git clone https://github.com/yqchilde/JDMemberCloseAccount.git
    
  2. 在项目根目录下打开终端执行以下命令,安装所需要的包

    pip3 install -r requirements.txt
    

    如果因没有代理拉不下包,请使用国内阿里云代理,执行如下命令:

    pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    
  3. 下载对应的浏览器驱动

    chrome请打开设置-关于chrome查看浏览器的版本,然后去 chromedriver 下载对应的版本/系统驱动,如图所示 ,将解压出来的chromedriver文件放入项目的drivers目录下即可)

二、获取 jd_wstool 监听地址及选择 jd_wstool 工具(IOS未越狱跳过此步骤)

两种方式二选一即可

  1. 外置 jd_wstool 工具: 点击下载 对应系统的 jd_wstool 工具

    • 运行下载的 jd_wstool,使用 手机 打开 jd_wstool 显示的url地址,记下能打开的url地址
  2. 内置 jd_wstool 工具: 将config.yaml文件第41行改为jd_wstool: false

    • 打开命令行工具,使用cd命令进入项目的utils文件夹下运行python listener.py,使用 手机 访问 jd_wstool 显示的url地址,记下访问时控制台有反应的url地址(手机无法访问但是控制台有反应)

三、配置项目

1. 添加cookie

  • 自动添加: 使用add_cookie.py可以获取手机端Cookie 并自动配置到 config.yaml 文件中

  • 手动添加:config.yaml 中第2行写入 cookie 项,注意是pt_key=123456;pt_pin=jd_987654的那个(请不要随意泄露你的cookie

2. 配置转发短信验证码

<details> <summary><b>安卓</b></summary> </details> <details> <summary><b>IOS越狱</b></summary>
  • 安装 Pythonista 3

    • 下载 监听脚本 ,修改第10行的ipaddr = '192.168.0.101'为第二步得到的IP地址
</details> <details> <summary><b>IOS未越狱</b></summary>
  1. 使用投屏软件将手机投射到电脑上

  2. 获取验证码区域的坐标

    • windows:按prtsc键(F12旁边)截图或其他软件截全屏,打开Windows附件* 画图,粘贴进去,切换铅笔工具,就可以在左下角查看坐标,坐标格式请查看图片 ,将坐标填入ocr_range,例ocr_range: [100, 200, 300, 400],填完坐标后不要移动投屏软件的窗口

    • mac:参考windows,请注意,windows坐标原点(0, 0)位于左上角,而mac坐标原点(0, 0)位于左下角

    • Tips:推荐使用snipaste截图软件查看屏幕坐标,屏幕左上角为原点

  3. 去百度云或阿里云申请一个OCR,或者使用本地OCR(三选一)

  4. 修改config.yaml文件

    1. 第40行改为is_ocr: true

    2. 将百度云baidu或阿里云aliyun或本地OCReasyocr(第三步选什么就填什么)填入45行type,例type: "easyocr"

    3. (本地OCR跳过此步)选择百度OCR请填写第48-50行baidu_app_id baidu_api_key baidu_secret_key,选择阿里OCR请填写第51行aliyun_appcode ,不会填就看第35-38行注释

</details>

3. 选择图形验证码识别方式(可跳过)

  • [x] 手动:config.yaml第96行改为type: "manual"

  • [ ] 本地识别:~~config.yaml第96行改为type: "local"~~

  • [x] 超级鹰(付费):config.yaml第96行改为type: "cjy",并填写第97-99行

  • [x] 图鉴(付费):config.yaml第96行改为type: "tj",并填写第101-102行

👇👇👇本项目配置文件详细说明👇👇👇

<details> <summary><b>config.yaml</b> - 详细说明</summary>
# 手机端cookie,是pt_key=xxx;pt_pin=xxx;
cookie: ""
debug: false

# selenium 相关
# selenium.browserType: 浏览器类型
# selenium.headless: 无头模式,建议默认设置
# selenium.binary: 可执行路径,如果驱动没有找到浏览器的话需要你手动配置,路径 “\” 符号注意转义需要写成 "\\"
# selenium.timeout: selenium操作超时时间,超过会跳过当前店铺,进行下一个店铺,默认为30秒
# selenium.check_wait: selenium操作发送验证码和校验是否成功注销的等待时间,目的是跳过黑店,默认3秒
selenium:
  browserType: "Chrome"
  headless: false
  binary: ""
  timeout: 30
  check_wait: 3

# shop 店铺设置相关
# shop.skip_shops: 需要跳过的店铺,需要填写卡包中的完整卡包名称,多个店铺用英文逗号隔开,格式为["aag会员中心", "大自然品牌会员"]
# shop.specify_shops: 指定注销的店铺,指定店铺优先级大于需要跳过的店铺,多个店铺用英文逗号隔开,格式为["aag会员中心", "大自然品牌会员"]
# shop.phone_tail_number: 手机后4位尾号,若填写将会校验店铺尾号是否是规定的,不符合就跳过,支持多手机号,格式为["0123","1234"]
# shop.member_close_max_number: 设置本次运行注销的最大店铺数,默认为0,代表不限制
shop:
  skip_shops: [ ]
  specify_shops: [ ]
  phone_tail_number: [ ]
  member_close_max_number: 0

# sms_captcha 短信验证码相关
# sms_captcha.is_ocr: 是否开启OCR模式,IOS设备必须开启,安卓非必须
# sms_captcha.jd_wstool: 是否调用jd_wstool工具监听验证码,默认为开启,如果不想开启,设置为false会调用内置websocket监听
# sms_captcha.ws_conn_url: websocket链接地址,不用动
# sms_captcha.ws_timeout: websocket接收验证码时间超时时间,超时会跳过当前店铺,进行下一个店铺,默认为60秒
# sms_captcha.ocr.type: ocr的类型,可选:baidu、aliyun、easyocr、baidu_fanyi
# sms_captcha.ocr.ocr_range: 需要截取的投屏区域的验证码左上角和右下角坐标,顺序依次是 [左x,左y,右x,右y],如[1,2,3,4]
# sms_captcha.ocr.ocr_delay_time: OCR识别的延迟时间,如果没识别到就几秒后再次尝试,默认为5
# sms_captcha.ocr.baidu_app_id: 需要在[百度智能云](https://cloud.baidu.com/) 注册个账号,搜索文字识别项目,创建应用后的`app_id`
# sms_captcha.ocr.baidu_api_key: 需要在[百度智能云](https://cloud.baidu.com/) 注册个账号,搜索文字识别项目,创建应用后的`api_key`
# sms_captcha.ocr.baidu_secret_key: 需要在[百度智能云](https://cl
View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated5d ago
Forks323

Languages

Python

Security Score

100/100

Audited on Mar 31, 2026

No findings