【技术向】再也不怕收不到 Telegram 的短信验证 |
您所在的位置:网站首页 › telegram为什么用不了网 › 【技术向】再也不怕收不到 Telegram 的短信验证 |
warning 免责声明《中国计算机信息网络国际联网管理规定》 计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。任何单位和个人不得自行建立或者使用其他信道进行国际联网。如果您位于中国,那么请遵守以上规定。本站对您的行为不负任何责任。 如果你身处中国大陆,并且曾经设法注册了一个 Telegram 账号的话,你大概已经知道了一个遗憾的事实:中国运营商屏蔽了 Telegram 的短信验证码。这意味着,如果你仅有一台设备登录的话,一旦退出登录,那么将无法再次登录 Telegram ——直到你离开中国大陆的移动信号服务区。 要解决这个烦人的问题,我们先要搞清楚,运营商是怎么屏蔽短信的?在此之前,还需要搞清楚,一条国际短信是如何送到你的手机上的? 问题分析现代移动通讯的技术基础是GSM(Global System for Mobile Communications),又称全球通讯系统,在中国俗称为2G网络。 2G网络可以为用户提供基础的打电话,发短信功能,而上网速度则非常缓慢,只有15-20K/s。通俗地说,假设一个国外的用户向国内的用户发送了一条短信,这条短信将会通过电缆或无线电基站等各种方式抵达国内的某处机房,在这里进行关键词检测,如果没问题,那么机房会通过基站把短信发给最终用户。 换SIM卡的方法是基本无效的,因为无论是国内的SIM卡还是国外的SIM卡,最终都得经过机房的检测,区别只是运营商不同而已。 我们需要找到一种真正的解决方案。 准备工作在开始之前,你需要….. 一个 「至少已经登陆在一台设备上」 的 Telegram 账号Python运行环境,推荐3.10+学习一些基本的信息知识,例如Linux命令行,Python pip等等(本文非小白向)Step 1. 申请一个 Telegram 开发者 API ID前往 my.telegram.org ,在登陆框里输入你的手机号(即使收不到验证码),检查你的 Telegram 服务通知,复制验证码填到浏览器里并点击下一步。 登录后,你会看到两个功能,一个是销户,一个是申请API ID。 ![]() 选择“API development tools”,接着网页会让你填写一些基本信息,可以随便填。 一切结束后,你会看到API ID和API Hash ![]() 注意,你的API Hash和API ID必须严格保密,否则别人可以冒用你的身份来写第三方 Telegram 客户端 Step 2. 配置Python环境Python如何安装这种问题我就不赘述了,网上教程一大把 接下来的代码要用到telethon,安装telethon需要在命令行执行: pip install telethonStep 3. 获取一个 Telegram SessionSession 意为“会话”,你每一次登录 Telegram,都会创建一个新Session 我们的目的是在新设备上重新登陆一次 Telegram,拿到一个新的Session字符串。 你可以使用这个链接 (记得一开始选Telethon):Link ![]() 获取Session相当于登录 Telegram,因此你需要输入自己账户的手机号,然后再次在 Telegram 服务通知里查阅验证码。 如果你开了二步验证,你还需要额外输入你的二步验证密码。 我不保证这个链接是安全的,但是我本人通过这个链接获取的Session,至今无事。如果你实在担心安全性,可以把脚本下载到本地运行。 请将你获取的Session字符串严格保密,任何人拿到你的Session都可以直接获取你 Telegram 账号的完整访问权限。 Step 4. 写代码接下来,理论上你就要开始写Python脚本了,但是你不用写,这里已经帮你准备好了模板: from telethon import TelegramClient, events import logging from telethon.sessions import StringSession from telethon.tl.types import InputMediaPhoto,InputMediaPhotoExternal logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s', level=logging.WARNING) APP_ID = API_HASH = SESSION = client = TelegramClient(StringSession(SESSION), APP_ID, API_HASH) #client = TelegramClient(StringSession(SESSION), APP_ID, API_HASH,proxy=("socks5", '127.0.0.1', 10808)) #如果你需要使用代理,那么请去掉上面那一行的注释,并注释掉上上行。代理配置请自行修改,本文不再赘述。 async def main(): entity = await client.get_entity(777000) async for message in client.iter_messages(entity,1): print(message.raw_text) with client: client.loop.run_until_complete(main())将上述脚本的对应内容换成你的API ID, API HASH 和 SESSION,别忘了给后两个加上双引号。下面是一个伪示例: APP_ID = 12345678 API_HASH = "d84caca3caca4835abece79d4d16c57d" SESSION = "XXXXXXXXXXXXXXXXX"Step 5. 运行脚本运行你的脚本,脚本应该会输出你 Telegram 服务通知的最后一条消息。 你可以对比一下输出的结果和 Telegram 服务消息,看看是否匹配。脚本的目的是通过一个额外的Session获取 Telegram 服务验证码,这样可以绕过SMS验证。 尾声: 拓展与提示Session有有效期,最长是一年。 如果你想要保险一些的措施,可以租赁一台云服务器,然后利用定时任务来循环执行脚本。 每一次执行都会刷新这个Session的上线时间,这样你的Session只要不手动在 设置->隐私->设备 里注销,将会一直保持可用。 更高级的玩法是把脚本配合PHP和服务器使用,这样你就可以在没有任何其他设备(电脑)的情况下,通过浏览器快速地随时随地查阅验证码了。 下次如果你不小心手滑退出了 Telegram 账号,别再慌了! 4.3 9 投票数文章评分 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |