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并重新安装
  • 尝试了一个不同的谷歌语音帐户
在谷歌语音网站改头换面之前,这段代码一直工作得很好。 python 3.5.2 windows服务器2012R2

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。您介意分享您的证据吗-