Python Pygoogle语音未登录
谷歌刚刚更新了他们的谷歌语音平台。这似乎与我的谷歌语音登录停止工作直接相关 我尝试了以下方法:Python Pygoogle语音未登录,python,python-3.x,login,google-voice,Python,Python 3.x,Login,Google Voice,谷歌刚刚更新了他们的谷歌语音平台。这似乎与我的谷歌语音登录停止工作直接相关 我尝试了以下方法: 允许此处建议的验证码() 在这里调整2.7解决方案没有运气 注销我的会话,即voice.logout() 卸载pygooglevoice并重新安装 尝试了一个不同的谷歌语音帐户 在谷歌语音网站改头换面之前,这段代码一直工作得很好。 python 3.5.2 windows服务器2012R2 from googlevoice import Voice from googlevoice.util im
- 允许此处建议的验证码()
- 在这里调整2.7解决方案没有运气
- 注销我的会话,即voice.logout()
- 卸载pygooglevoice并重新安装
- 尝试了一个不同的谷歌语音帐户
from googlevoice import Voice
from googlevoice.util import input
voice = Voice()
voice.login(email='email@gmail.com', passwd='mypassword')
def sendText(phoneNumber,text):
try:
voice.send_sms(phoneNumber, text)
except Exception:
pass
sendText(phoneNumber=[aaabbbcccc],text="Hello from Google Voice!")
voice.logout()
错误日志:
Traceback (most recent call last):
File voice.py, line 95, in login
assert self.special
AssertionError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 7, in <module>
voice.login(email='********', passwd='*******')
File voice.py, line 97, in login
raise LoginError
googlevoice.util.LoginError
回溯(最近一次呼叫最后一次):
登录中第95行的voice.py文件
自命
断言错误
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
第7行,在
voice.login(email='********',passwd='********')
登录中的voice.py文件,第97行
引发登录错误
googlevoice.util.login错误
我也有同样的问题。看起来被发回的页面与以前发送的页面完全不同,它是一个javascript/ajax解决方案
我一直在搞乱它一点,并跟踪到丢失的“特殊”会话令牌,这是以前包含的。PyGoogleVoice正在搜索从google返回的HTML页面中的字符串文字“\u rnr\u se”,以获取会话值。未找到该字符串,这导致它认为登录失败。据我所知,PGV需要该令牌来进行url/函数回调以模拟web客户端
现在有一个javascript函数正在检索该变量,而不是将其传递回HTML页面中的硬编码
gc.net.XhrManager = function(xsrfToken, notification, loadNotification) {
goog.events.EventTarget.call(this);
this.xsrfToken_ = xsrfToken;
this.notification_ = notification;
this.loadNotification_ = loadNotification;
this.logger_ = goog.debug.Logger.getLogger("gc.Xhr");
this.xhrManager_ = new goog.net.XhrManager(0);
this.activeRequests_ = new goog.structs.Map;
this.eventHandler_ = new goog.events.EventHandler(this);
this.eventHandler_.listen(this.xhrManager_, goog.net.EventType.SUCCESS, this.onRequestSuccess_);
this.eventHandler_.listen(this.xhrManager_, goog.net.EventType.ERROR, this.onRequestError_);
};
然后在打电话时,它使用如下值:
gc.net.XhrManager.prototype.sendPost = function(id, url, queryData, opt_successCallback, opt_errorCallback) {
this.sendAnalyticsEvent_(url, queryData);
id = goog.string.buildString(id, this.idGenerator_.getNextUniqueId());
if (goog.isDefAndNotNull(queryData) && !(queryData instanceof goog.Uri.QueryData)) {
throw Error("queryData parameter must be of type goog.Uri.QueryData");
}
var uri = new goog.Uri(url), completeQueryData = queryData || new goog.Uri.QueryData;
completeQueryData.set("_rnr_se", this.xsrfToken_);
this.activeRequests_.set(id, {queryData:completeQueryData, onSuccess:opt_successCallback, onError:opt_errorCallback});
this.xhrManager_.send(id, uri.toString(), "POST", completeQueryData.toString());
};
我想我会分享我的发现,这样其他人就可以帮助修补新代码,并找出如何检索新版本并与之交互。一旦我们能够找到捕获xsrfToken或_rnr_se值的新方法,这可能不会太遥远
目前我的时间有点短,但我很想让它再次发挥作用。这可能是一个搞乱firebug等的问题。通过javascript观察如何在浏览器中启动会话,并让PGV模拟新的URL等。我也有同样的问题。看起来被发回的页面与以前发送的页面完全不同,它是一个javascript/ajax解决方案 我一直在搞乱它一点,并跟踪到丢失的“特殊”会话令牌,这是以前包含的。PyGoogleVoice正在搜索从google返回的HTML页面中的字符串文字“\u rnr\u se”,以获取会话值。未找到该字符串,这导致它认为登录失败。据我所知,PGV需要该令牌来进行url/函数回调以模拟web客户端 现在有一个javascript函数正在检索该变量,而不是将其传递回HTML页面中的硬编码
gc.net.XhrManager = function(xsrfToken, notification, loadNotification) {
goog.events.EventTarget.call(this);
this.xsrfToken_ = xsrfToken;
this.notification_ = notification;
this.loadNotification_ = loadNotification;
this.logger_ = goog.debug.Logger.getLogger("gc.Xhr");
this.xhrManager_ = new goog.net.XhrManager(0);
this.activeRequests_ = new goog.structs.Map;
this.eventHandler_ = new goog.events.EventHandler(this);
this.eventHandler_.listen(this.xhrManager_, goog.net.EventType.SUCCESS, this.onRequestSuccess_);
this.eventHandler_.listen(this.xhrManager_, goog.net.EventType.ERROR, this.onRequestError_);
};
然后在打电话时,它使用如下值:
gc.net.XhrManager.prototype.sendPost = function(id, url, queryData, opt_successCallback, opt_errorCallback) {
this.sendAnalyticsEvent_(url, queryData);
id = goog.string.buildString(id, this.idGenerator_.getNextUniqueId());
if (goog.isDefAndNotNull(queryData) && !(queryData instanceof goog.Uri.QueryData)) {
throw Error("queryData parameter must be of type goog.Uri.QueryData");
}
var uri = new goog.Uri(url), completeQueryData = queryData || new goog.Uri.QueryData;
completeQueryData.set("_rnr_se", this.xsrfToken_);
this.activeRequests_.set(id, {queryData:completeQueryData, onSuccess:opt_successCallback, onError:opt_errorCallback});
this.xhrManager_.send(id, uri.toString(), "POST", completeQueryData.toString());
};
我想我会分享我的发现,这样其他人就可以帮助修补新代码,并找出如何检索新版本并与之交互。一旦我们能够找到捕获xsrfToken或_rnr_se值的新方法,这可能不会太遥远
目前我的时间有点短,但我很想让它再次发挥作用。这可能是一个搞乱firebug等的问题,通过javascript观察如何在浏览器中启动会话,并让PGV模拟新的URL等。Per Ward Mundy:
新版本的gvoice命令行sms文本消息已经发布,它被固定为与谷歌新的现代化“AngularJS”gvoice web界面一起使用。这是一个很小的变化,以使其工作,以防任何人都想知道。
将以下命令粘贴到shell中以升级:
cd ~
git clone https://github.com/pettazz/pygooglevoice
cd pygooglevoice
python setup.py install
cp -p bin/gvoice /usr/bin/.
pip install --upgrade BeautifulSoup
每间病房Mundy:
新版本的gvoice命令行sms文本消息已经发布,它被固定为与谷歌新的现代化“AngularJS”gvoice web界面一起使用。这是一个很小的变化,以使其工作,以防任何人都想知道。
将以下命令粘贴到shell中以升级:
cd ~
git clone https://github.com/pettazz/pygooglevoice
cd pygooglevoice
python setup.py install
cp -p bin/gvoice /usr/bin/.
pip install --upgrade BeautifulSoup
我没有解决方案,但我可以确认Blakes在使用python 2.7的Debian Jessie和使用python 2.7的raspian wheezy上的发现。我还注意到,新版本的url与“遗留”版本不同,而不是。用现代的URL替换旧的URL仍然会给我带来一个错误,但我很确定这也需要做。不幸的是,当我给他们发电子邮件并提交“反馈”表时,谷歌没有提供任何支持或反馈。我没有解决方案,但我可以确认Blakes在使用python 2.7的Debian Jessie和使用python 2.7的raspian wheezy上的发现。我还注意到新版本的url与“遗留”版本不同,而不是。用现代的URL替换旧的URL仍然会给我带来一个错误,但我很确定这也需要做。不幸的是,当我给他们发电子邮件并提交“反馈”表时,谷歌没有提供任何支持或反馈。仅供参考-我一直在玩这个游戏,只是为了衡量与新GV设计接口需要多少返工,这是一个相当大的变化。我已经设法让我版本的PGV发送了一条短信(这就是我使用它的全部目的),但它不是很干净——只是一个概念验证修改。实际上,似乎进行API调用所需的特殊酱汁不再是“\u rnr\u se”标记,而是在登录期间作为cookie传递的“gvx”标记。我还没有完全弄清楚哪个页面会一直为我创建gvx cookie——似乎我可以在使用2-factor登录时捕获它,但并不总是在只使用密码登录时捕获它。要使新版本与pygooglevoice一起工作,需要跟踪如何可靠地拦截此cookie,以便我们能够初始化GVoice API。您介意分享您的证据吗-