当前位置: 首页 > news >正文

协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:
1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。
2.编写程序控制Mac os/iphone上自带的iMessage应用进行验证(自动无痕迹检测,无需人工干预),将数据自动填充到号码框之后,如果捕获到失败则不是iMessage账号,捕获到成功则把数据保存下来。

 

二、iMessage蓝号检测协议分析
/* 注意:检测不同国家手机号,需要在被检测手机号前面 +国家代码,全自动协议筛选,检测结果自动保存 */
imessge蓝号检测协议代码如下:

'''
    协议通道版iMessage蓝号检测
'''
import time
import os
import urllib.request
import common
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys# 初始化参数设置
def init():
    options  =  Options()
    options.binary_location = "./apple.dll"
    options.add_argument('--ignore-certificate-errors')
    options.add_argument('--ignore-ssl-errors')
    options.add_argument("--log-level=3") 
    options.add_experimental_option("excludeSwitches", ["enable-logging"])
    options.add_argument(f"user-agent=common.get_rand_ua()")    
    options.add_argument('--headless')    # 创建服务
    service = Service(executable_path="./driver.dll")
    driver =  webdriver.Chrome(service=service, options=options)
    driver.set_window_position(0,0)
    driver.set_window_size(560,820)
    driver.get(check_URL) 
    driver.implicitly_wait(5)
    return driver
    
        
# 任务处理
def Check(file_txt, ini_file, result_path, result_file_name):
    if os.path.exists(file_txt) == True:
    
        #启动初始参数
        browser = init()
        
        with open(file_txt, 'r') as f:
            lines = f.readlines()
            line_count = len(lines)
            common.log(f"待检测数据文件 {file_txt} 总数量: {line_count} 条")
            index = int(common.read_ini(ini_file))
            tag = True    
            while tag:
                #根据索引取出数据
                Email_data = lines[index].strip()
                common.log(Email_data + " 检测中...")                email_locator = (By.CLASS_NAME, 'generic-input-field.form-textbox-input.iforgot-apple-id.force-ltr')
                email_element = common.is_element_present(browser, email_locator)
                
                image_data_locator = (By.XPATH, '//idms-captcha//div//div//img')
                image_data_element = common.is_element_present(browser, image_data_locator)
                
                capth_locator = (By.CLASS_NAME, 'generic-input-field.form-textbox-input.captcha-input')
                capth_element = common.is_element_present(browser, capth_locator)
                    
                submit_locator = (By.XPATH, '//idms-toolbar//div//div//div//button')
                submit_element = common.is_element_present(browser, submit_locator)
                if     email_element == True and image_data_element == True and capth_element == True and submit_element == True :                                
                    time.sleep(0.5)
                    browser.find_element(By.CLASS_NAME, 'generic-input-field.form-textbox-input.iforgot-apple-id.force-ltr').send_keys(Email_data)                    # 获取验证码数据并识别
                    image_element = browser.find_element(By.CSS_SELECTOR, '.img-wrapper > img:nth-child(1)')
                    Verification_code = common.get_verify_code(image_element.screenshot_as_png)
                                        
                    time.sleep(0.5)
                    browser.find_element(By.CLASS_NAME, 'generic-input-field.form-textbox-input.captcha-input').send_keys(Verification_code)                      time.sleep(0.5)    
                    browser.find_element(By.XPATH, '//idms-toolbar//div//div//div//button').click()
                
                    time.sleep(1)
                    button_locator = (By.CSS_SELECTOR, 'button.button:nth-child(2) > div:nth-child(1)')
                    button_element = common.is_element_present(browser, button_locator)
                    if button_element == True :
                        # 记录当前检测的数据的索引
                        index += 1
                        common.write_ini(ini_file, index)
                        
                        # 记录检测成功的数据
                        common.wirte_append_txt(result_path, result_file_name, Email_data + "---" + "OK\n")
                        common.log(Email_data + ' 已开通')            
                    else:    
                        err_mess_locator = (By.CLASS_NAME, 'form-message-wrapper.std-error span.form-message')
                        err_mess_lement= common.is_element_present(browser, err_mess_locator)
                        if err_mess_lement == True :
                            common.log('验证码识别错误,重新检测中...')                
                        else:
                            index += 1
                            common.write_ini(ini_file, index)
                            # 记录检测成功的数据
                            common.wirte_append_txt(result_path, result_file_name, Email_data + "---" + "Fail\n")
                            common.log(Email_data + ' 未开通')
                        
                    if index >= line_count:
                        common.write_ini(ini_file, 0)
                        common.log(f'{file_txt}, 文件的{line_count}条数据已全部检测完毕!')    
                        
                        tag = False
                        break                
                else:
                    common.log('API接口加载失败,重新请求中...')
                browser.quit() 
                time.sleep(0.5)
                browser = init()                
    else:
        common.log(f"待检测的 {file_txt} 文件不存在!")
                   
 
# 取当前日期时间,返回格式20250113形式
def date_now():date_now = time.strftime("%Y%m%d", time.localtime()) return date_nowif __name__ == '__main__':
    common.banner()result_file_name = common.date_now() + '_检测结果.txt'
    Check('data.txt', 'Config.ini', '检测结果', result_file_name)

源码编译后运行效果图(程序可以在WindowsMac/Linux等系统下多开同时运行,协议通道版检测,无需APP ID,无需证书,安装即可使用, 全自动im蓝号检测,无需人工看守;检测结果自动保存,升级版参考文章: http://www.opsers.net  )

 1

 

相关文章:

协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2…...

栈和队列总结

栈和队列理论C++中stack,queue 是容器么? 我们使用的stack,queue是属于那个版本的STL? 我们使用的STL中stack,queue是如何实现的? stack,queue 提供迭代器来遍历空间么?stack和queue是STL中的容器适配器,不是类似list,vector那样的容器; 容器适配器本质上是基于底层真…...

工业互联网认知实训台-一句话介绍

工业互联网认知实训台主要由传感器、PLC控制器、工业以太网设备、人机界面(HMI)、步进电机和伺服电机等设备组成。步进电机:通过电脉冲信号控制电机每步旋转固定角度,结构简单、成本低,适合精确定位,但效率较低且可能失步。实训台中使用PLC(如1212C系列)通过脉冲信号控…...

1

<meta name="description" content="加载中... 如白屏请[ 点击刷新页面 ]"> <meta property="og:description" content="加载中... 如白屏请[ 点击刷新页面 ]"> <meta http-equiv="Cache-Control" content=&…...

湾区杯 SilentMiner WP

攻击者的ip地址查看文件 /var/log/btmp 发现短时间内大量登录,可确定攻击者 ip 为 192.168.145.131 lastb -f /var/log/btmp192.168.145.131攻击者共进行多少次ssh口令爆破失败?根据 /var/log/btmp 文件计数 lastb -f btmp | grep 192.168.145.131 | wc -l也可以在 /var/log/…...

Python-课后题题目-1.1编程世界初探

1.1编程世界初探(单选题) 1.程序设计语言的主要目的是什么? A让计算机变得更便宜 B使人类能够以高效,清晰,结构化的方式表达计算机逻辑和数据操作 C取代数学和逻辑学 D仅用于编写游戏程序 2.机器语言是由什么组成的? A十进制数字 B英文字母 C二进制代码 D特殊符号 3.汇…...

Python-课后题题目-1.2初识python语言

1.2初识python语言(单选题)Python语言最初由谁创建? A.林纳斯托瓦兹 B.吉多范罗苏姆 C.詹姆斯高斯林 D.布雷丹艾奇 Python 0.9.0版本首次发布于哪一年? A.1989 B.1991 C.1994 D.2000 Python 1.0版本引入了以下哪项特性? A.异步编程 B.类型注释 C.循环和异常处理 D.垃圾回收…...

node和npm相关的记录

1 npm install --loglevel verbose 安装的啰嗦模式会打印日志2 3 npm config get registry 查看镜像源信息。 淘宝的镜像源已经关闭了。4 5 #windwos可以安装一个nvm,可以切换node和npm的版本。6 nvm下载地址 https://github.com/coreybutler/nvm-windows/releases7 8 nvm in…...

在Spring boot 中使用@master 设置主从数据库

基础配置 application.ymlspring:  datasource:     master:       url: jdbc:mysql://localhost:3306/master_db       username: root       password: 123456       driver-class-name: com.mysql.cj.jdbc.Driver …...

设计模式-装饰器模式 - MaC

装饰器模式是一种结构型设计模式,它允许在不修改原有对象结构的情况下,动态地给对象添加新的功能。装饰器模式通过创建一个包装对象(装饰器)来包裹真实的对象,从而在运行时扩展对象的功能。 装饰器模式包含以下角色:组件(Component):定义一个对象接口,可以给这些对象动…...

【API接口】最新可用河马短剧接口

最新可用红果短剧接口,支持短剧搜索、短剧详情解析、短剧播放链接解析功能,助您快速构建您的专属短剧客户端 使用之前您需要先去注册下key 申请地址: https://www.52api.cn 接口地址:https://www.52api.cn/api/hm_duanju 返回格式:application/json 请求方式:GET/POST 请…...

第 16 章反射(reflection)

第 16 章反射(reflection)第 16 章反射(reflection) 16.1 一个需求引出反射 16.1.1 请看下面的问题根据配置文件 re.properties 指定信息,创建Cat对象并调用方法hi classfullpath=com.hspedu.Cat method=hi思考:使用现有技术,你能做的吗?这样的需求在学习框架时特别多,即通…...

自我介绍+软工5问

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/join?id=CfDJ8G33EJ5dWE5OhU_7yPrjq1_EG2G2ljnyYNdPWrrB61TEPdvbX8B-02_mm2lbvSH0zHF0AFJBdSQazCWQtYhdASVnPbQZ7mm4BuFr16ksfoeASRJAr16ktj02s3Qx3JGS33oIuJz021Uout0lNo8pyB8 …...

电容器+动生电动势+自由落体模型

电容器电容为 \(C\),磁感应强度为 \(B\),导体棒长度为 \(L\),质量为 \(m\),重力加速度 \(g\)。 设关于时间 \(t\) 的函数 \(E(t),U(t),Q(t),I(t),v(t),a(t)\)。 \[\begin{cases} E(t)=BLv(t)\\ U(t)=E(t)\\ Q(t)=CU(t)\\ I(t)=Q(t)\\ F(t)=mg-BLI(t)\\ a(t)=v(t)=\dfrac{F(…...

引用(reference)

1.概念 引用是C++对C的一个重要扩充,引用表示给变量起个别名;//类似于linux中的硬链接文件 2.定义引用 数据类型 &引用名 = 引用的目标; 如: int &b = a; & 在C++有三种作用: (1)定义引用时,是引用标识符,表示定义的是一个引用 (2)按位与 & (3)其他任何场…...

设计模式-组合模式 - MaC

什么是组合模式? 组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表示"部分-整体"的层次关系。组合模式使得客户端对单个对象和组合对象的使用具有一致性。 组合模式包含以下角色:组件(Component):声明组合中对象的接口,适当情况下实现所有类共有…...

【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态

加载中... 如白屏请[点击刷新页面 ]...

tmux 使用教程

1. 什么是 tmux tmux 是一个 终端复用器(terminal multiplexer)。 它允许你在一个终端里运行多个会话(session)、窗口(window)、面板(pane),并且支持:断开与重连:即使 SSH 连接断开,任务仍然继续运行。 多窗口管理:一个终端里像“标签页”一样切换窗口。 分屏功能…...

引用类型

“引用”(reference)是c++的一种新的变量类型,是对C的一个重要补充。它的作用是为变量起一个别名。假如有一个变量a,想给它起一个别名,可以这样写: int a; int &b=a;这就表明了b是a的“引用”,即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上…...

CF1237C2

CF1237 C2. Balanced Removals (Harder) 题目描述 这是该问题的更难版本。在本版本中,\(n \le 50\,000\)。 在三维空间中有 \(n\) 个互不相同的点,编号从 \(1\) 到 \(n\)。第 \(i\) 个点的坐标为 \((x_i, y_i, z_i)\)。点的数量 \(n\) 是偶数。 你需要通过一系列 \(\frac{n}{…...

我好像是病了,这几天的黑眼圈越来越重,明明都是按时早睡,但就是睡不够,整天昏昏沉沉,今天甚至一不小心扭伤了腿,坐在队伍旁边,我居然又渐渐睡了过去,尽管周围很吵闹。 我可能是病了,我每天感到有着无数审视的目光向我投来,同伴的漠视,他人的讥讽,上位者的冷眼,我感…...

力扣215. 数组中的第K个最大元素

力扣215. 数组中的第K个最大元素 1.二叉最小堆法:维护一个size为k的最小堆,每次从堆中去除一个比item更小的元素,最后留下的便是最大的k个元素。(nlogn)1 class Solution {2 public:3 int findKthLargest(vector<int>& nums, int k) {4 priority_que…...

linux环境docker离线镜像elasticsearch-7.17.3镜像资源

中国移动云盘下载地址: https://caiyun.139.com/w/i/2pU90TqM2d73i 提取码:ydab 复制内容打开中国移动云盘手机APP,操作更方便 1、准备已安装docker的Linux环境,将文件放到任意目录解压 2、导入镜像命令:docker load -i elasticsearch-7.17.3.tar 3、运行镜像命令:docker…...

Python 降序排序:轻松搞定列表、字典和自定义对象

在 Python 中,降序排序是一个非常常见的需求。无论是对列表、字典还是自定义对象进行排序,Python 都提供了简单而强大的方法来实现降序排序。今天,就让我们一起学习如何在 Python 中实现降序排序,并分享一些实用的技巧和最佳实践。 一、列表的降序排序 (一)使用 sort() 方…...

第02周 预习、实验与作业:Java基础语法2、面向对象入门

集美大学课程实验报告-第02周 预习、实验与作业:Java基础语法2、面向对象入门项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 第02周 预习、实验与作业:Java基础语法2、面向对象入门上机实践日期上机实践时间 2学…...

part 4

这场感觉就T4比较有意义LCA 结论:三个点两两求 LCA,lca 的编号异或起来是答案(到三个点的距离总和最小的点),且该答案是以其中一点为根时另外两点的 LCA。 所以我们可以得到结论 点 \(p\) 和点 \(q\) 以 \(x\) 为根的 lca 深度是 \(dlca_{p,q} \oplus dlca_{p,x} \oplus d…...

systemctl的service脚本写法

Description=MedicTech Server # 服务描述,可以自定义 After=network.target network-online.target nss-lookup.target [Service] Type=simple # 服务类型,简单后台进程常用 simple User=root # 指定运行服务的用户,根据你的需求修改,非 root 用户更安全 ExecStart=/home/…...

9月份美联储的降息利好

美联储降息利好消息美国8月CPI与就业数据公布:通胀符合预期,失业金人数攀升,市场反应积极北京时间11日晚间,美国劳工统计局及相关机构公布多项关键经济数据,数据表现呈现分化,同时引发金融市场显著波动,具体如下:一、核心经济数据概览通胀数据(CPI):符合市场预期 美…...

口胡记录

我们都会拥有美好的未来——频率也大概就是一天两题的样子,因为我还要做到一周 VP 两场 CF Div2。 这对于一个暑假才开始复健,一年没训的人来说已经很困难了/fn/ll P9753 [CSP-S 2023] 消消乐 Description 给你一个字符串 \(s\),让你求出 \(s\) 的偶回文子串个数。 \(|s|\le…...

Day16内存分析及初始化

图中空白处是关于数组下标越界的报错,调用的数组长度超出被调用数组的长度时程序会报错package array;public class ArrayDemo2 {public static void main(String[] args) {//静态初始化:创建+赋值int [] a = {123,4566,756765,5676,421,442,};System.out.println(a[3]);//前面…...

leveldb源码分析 #1 Slice WriteBatch WriteBatchInternal 【work记录】

日期:2025.9.6(凌晨) 个人总结: perface 是这样的,本来是打算写完之后再整理的,但是感觉自己貌似会懒癌犯了,所以决定还是自己看了哪些内容就都发了吧。 如果自己真的会想整理的话,那就算之前写个过半成品应该也会有心去整理好好总结吧。 为了自己的数据库的水平可以再提…...

欧拉安装

因为 openEuler 22.03 LTS 使用的内核版本是 5.10,所以选择 5.x 内核的选项是最匹配的。...

2025实测:6款主流公众号编辑器大比拼,解决你的排版难题!

在新媒体运营的日常工作中,公众号排版是一项耗时又费力的任务。写作慢、排版耗时、跨平台排版不统一、跨平台发文琐碎、热点跟不动不及时、配图难/侵权风险等问题,常常困扰着我们这些新媒体人。为了找到一款好用的公众号编辑器,我亲测了多款市面上的主流产品。在本文中,我将…...

devc学C语言

之前用的是VS,现在开始用 devc,兼容性更强...

HarmonyOS 5.1手势事件详解

大家好,我是 V 哥。手势事件由绑定手势方法和绑定的手势组成,绑定的手势可以分为单一手势和组合手势两种类型,根据手势的复杂程度进行区分。本文跟着 V 哥一起来探讨手势事件处理。 想要考取鸿蒙认证的小伙伴,请加入V 哥班级获取辅导: https://developer.huawei.com/consu…...

Vue3项目中集成AI对话功能的实战经验分享

ai-suspended-ball-chat组件使用体验摘要 本文分享了Vue3项目中使用ai-suspended-ball-chat组件集成AI对话功能的实践经验。该组件提供悬浮球和独立面板两种模式,支持流式响应、图片上传、语音交互等功能,显著提升了用户体验。通过实际案例展示了在客服系统和代码助手场景中的…...

gulimall出现服务间调用org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose 问题

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;A调用B模块出现上面这个问题,…...

Java02课前问题列表

Java02课前问题列表1.方法相关问题 public class Main {static void changeStr(String x) {x = "xyz";}static void changeArr(String[] strs) {for (int i = 0; i < strs.length; i++) {strs[i] = strs[i]+""+i;}}public static void main(String[] ar…...

达梦数据库安装和使用

1、达梦数据库安装地址 https://eco.dameng.com/document/dm/zh-cn/start/install-dm-windows-prepare.html 2、 点击下载3、4、 现在版本只需要点击exe文件56 点击【下一步】如图所示7、 接受授权协议8 如果没有key文件可跳过 如果有点击浏览找到key文件系统自动校验9建议典型…...

CSP 赛前周记

初赛前 - 第一周(末) 这学期的第一周,据说是本学期第二长的假期,故开始摸摸。 Day1 - 周五 晚上回来开了把信奥大联赛,发现比你谷月赛还烂,IOI 赛制,风格跟 CSP 三不沾,每周有时间打打玩玩吧(结果被打爆了,只有 230pts)。总结Day2 - 周六 由于作业多得一批,白天在疯…...

Day16对数组的基本认识

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

Ubuntu 界面变为 Mac

sudo apt install gnome-tweaks...

今日随笔

今天完成了社会实践调查作业...

Day16

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

PVE9环境下飞牛OS安装vGPU驱动

1.安装过程# 切换root权限 sudo su -# 屏蔽nouveau echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf# 更新initramfs update-initramfs -u# 安装组件 apt update && apt install build-essential dkms linux-headers-generic lib…...

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化环境变量其它配置源

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化&环境变量&其它配置源 1. 配置系统入门(视频2-32)传统Web.config配置的缺点,之前DI讲过。 为了兼容,仍然可以使用web.config和ConfigurationManage类,但不推荐。 .NET中的配置系统…...

md格式

markdown # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题*斜体* **粗体** ***粗斜体*** ~~删除线~~ `print("hello world)` ==高亮== 一级标题 二级标题 三级标题 四级标题 斜体 粗体 粗斜体 删除线 print("hello world) 高亮>一层嵌套引用 >>二层嵌套…...

CSP-S模拟20

前言: 一场通过乱搞获得如下成绩的比赛。\(T1:\) 思路: 一场情况超级复杂(bushi)的大模拟(应该可以这么叫吧?)直接先这样这样,在那样那样,最后在叽里呱啦就好了。 嘿嘿,开个玩笑嘛。首先,我们知道一定至少从\(S\)跳到\(S\)到\(T\)的那条链上,这样我们可以就\(S\)跳…...

第7篇、Kafka Streams 与 Connect:企业级实时数据处理架构实践指南

Kafka Streams 与 Kafka Connect:企业级实时数据处理架构实践指南 技术背景与适用场景 在现代数据架构中,实时数据处理已成为企业数字化转型的核心能力。Apache Kafka作为分布式流处理平台,提供了两个关键组件:Kafka Streams:轻量级流处理库,支持有状态实时计算 Kafka Co…...

Day16编写一个计算机程序

package method; import java.util.Scanner; public class Demo6 {/**作业:*1 写四个方法,加减乘除*2 利用循环+switch进行用户交互*3 传递需要操作的两个数*4 输出结果*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);boolean sco…...