Yonsm / MiService

XiaoMi Cloud Service for mi.com
MIT License
662 stars 201 forks source link

账号登录上报错,无论用手机号,用户id还是邮箱都不行,怎么解决 #32

Open robinhsu121 opened 1 year ago

robinhsu121 commented 1 year ago

image

jjiikkkk commented 1 year ago

就是登录不上去的,我测试了无数次了,换了几个人的方法,我怀疑这个操作被和谐了吧 你在新加坡的话是外网,根本连接不上

jjiikkkk commented 1 year ago

你用阿里云的海外版 白嫖一个国内VPS试试看

jjiikkkk commented 1 year ago

scription': '登录验证失败', 'securityStatus': 0, '_sign': '0psXfr43eNI0IX6q9Suk3qWbRqU=', 'sid': 'xiaomiio', 'result': 'error', 'captchaUrl': None, 'callback': 'https://sts.api.io.mi.com/sts', 'location': '', 'pwd': 0, 'child': 0, 'desc': '登录验证失败'} Traceback (most recent call last): File "/home/ubuntu/.local/lib/python3.10/site-packages/miservice/miaccount.py", line 69, in login raise Exception(resp) Exception: {'qs': '%3Fsid%3Dxiaomiio%26_json%3Dtrue', 'code': 70016, 'description': '登录验证失败', 'securityStatus': 0, '_sign': '0psXfr43eNI0IX6q9Suk3qWbRqU=', 'sid': 'xiaomiio', 'result': 'error', 'captchaUrl': None, 'callback': 'https://sts.api.io.mi.com/sts', 'location': '', 'pwd': 0, 'child': 0, 'desc': '登录验证失败'} Error https://api.io.mi.com/app/home/device_list: Login failed ubuntu@VM-4-7-ubuntu:~/MiService$

永远都是这样上不去 我不搞了 烦死了 累了

nanbingxyz commented 1 year ago

把登录操作返回结果打印出来会有一个location, 复制这个location的地址到浏览器登录一下(可能会让你确认手机号是否过变动,点击确认),然后再执行就可以了。

jjiikkkk commented 1 year ago

和这个没关系的吧 别人说要加一个python的符号,以及要在WLS上实现,所有云服务器都会失败的,别管国内国外

nanbingxyz commented 1 year ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

jjiikkkk commented 1 year ago

不是部分人,是大部分人都过不去验证,你说的结果打印 到登录地址手动登陆,怎么没有登陆呢,都登陆的 都不行的

gdnorcy commented 1 year ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

怎么把结果打印出来?求方法,感谢

nanbingxyz commented 1 year ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

怎么把结果打印出来?求方法,感谢

在miaccount.py这个文件,找到 resp = await self._serviceLogin(f'serviceLogin?sid={sid}&_json=true') 把resp打印出来就行了

chaoqunxie commented 1 year ago

把登录操作返回结果打印出来会有一个location, 复制这个location的地址到浏览器登录一下(可能会让你确认手机号是否过变动,点击确认),然后再执行就可以了。 感谢大佬 这样确实解决了

bobo-junjun commented 1 year ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

怎么把结果打印出来?求方法,感谢

在miaccount.py这个文件,找到 resp = await self._serviceLogin(f'serviceLogin?sid={sid}&_json=true') 把resp打印出来就行了

感谢提示,解决了。我把location里面的地址拿到浏览器上,登录,验证之后,服务器还是登录不上。但是根据你的提示,我换了另外一种方法,在服务器上安装x-ui,然后全局代理到本地,在本地登录一次,通过验证,即可,安装命令,bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) 具体参考 https://github.com/vaxilu/x-ui

surfboy2000 commented 1 year ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

怎么把结果打印出来?求方法,感谢

在miaccount.py这个文件,找到 resp = await self._serviceLogin(f'serviceLogin?sid={sid}&_json=true') 把resp打印出来就行了

感谢提示,解决了。我把location里面的地址拿到浏览器上,登录,验证之后,服务器还是登录不上。但是根据你的提示,我换了另外一种方法,在服务器上安装x-ui,然后全局代理到本地,在本地登录一次,通过验证,即可,安装命令,bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) 具体参考 https://github.com/vaxilu/x-ui

方便加个Q:3459220392,指导一下!感谢

luxuncang commented 1 year ago

设置服务器上的代理

  1. 安装 tinyproxy

在您的服务器上安装 tinyproxy。这通常可以通过您的包管理器来完成。 例如,在 Ubuntu 上使用命令:

sudo apt-get install tinyproxy
  1. 配置 tinyproxy
  1. 运行 tinyproxy
sudo service tinyproxy start

sudo systemctl start tinyproxy
  1. 全局设置
  1. 浏览器设置

测试代理

  1. 打开浏览器

使用已经设置了代理的浏览器。

  1. 访问小米账户登录页面

进入小米账户登录页面。

  1. 登录您的账户

输入您的用户名和密码进行登录。

maopucheng commented 11 months ago

我发现了一种可能性。 家里的网络,电信没有分配外网IP给你。现在电信默认给你分配了一个内网地址,没有公网地址。 我后来打电话给电信要求给一个外网IP,立刻就可以登录了。

muxueweiyu commented 10 months ago

有解决小米账号在电脑端相同的网络环境登录下就没再触发 1 2

xjblszyy commented 8 months ago

我是用的香港节点的阿里云成功了,用secretCRT给服务器打了隧道,然后用Proxifier做了代理,登陆了几次后就可以了

Chidoudou commented 3 months ago

@jjiikkkk 我的理解是服务端有风控,由于某种原因需要二次认证导致了这个问题(比如新的IP,新的设备第一次登录)。我也是遇到同样的问题,然后把结果打印出来后找到登录地址手动登录一下,再执行就可以了。部分人可能是这个原因,可以试试。

怎么把结果打印出来?求方法,感谢

在miaccount.py这个文件,找到 resp = await self._serviceLogin(f'serviceLogin?sid={sid}&_json=true') 把resp打印出来就行了

按这个方法成功了,感谢

BussanQ commented 1 month ago

有解决小米账号在电脑端相同的网络环境登录下就没再触发 1 2

这个解决了我的问题

DroidaLee commented 2 weeks ago

把登录操作返回结果打印出来会有一个location, 复制这个location的地址到浏览器登录一下(可能会让你确认手机号是否过变动,点击确认),然后再执行就可以了。

你的回答非常有帮助👍。 我是在国内的aliyun上部署了本地能正常的运行的代码,但是复制出这个location在我本地的浏览器打开登录,服务器依然没有登录,但是能推断出就是地理位置变化引起的风控问题,所以如果能在服务器正常登录下小米账号应该就能解决这个问题,因为ECS服务器并未部署桌面,所以在ECS上部署了一个firefox的docker,通过远程浏览器的方式,在服务器上登录了下mi.com后,完美解决!