2017-02-07 5 views
1

GoogleはGoogleの音声プラットフォームを更新しました。これは、私のgooglevoiceログインが動作を停止したときに直接関係しているようです。Pygoogleの音声はログインしていません

私は次のことを試してみました:

  • ここで提案としてキャプチャが可能(pygooglevoice-login-error
  • がvoice.logoutである私のセッションのうち運Python Google Voice
  • ログ(とここに2.7ソリューションの適合)
  • pygooglevoiceをアンインストールして再インストールしました。
  • 別のGoogle音声アカウントを試しました。

このコードは、Google音声のウェブサイトの改造まで完全に機能していました。 のpython 3.5.2窓Server2012R2

from googlevoice import Voice 
from googlevoice.util import input 


voice = Voice() 
voice.login(email='[email protected]', 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 
+0

私は解決策を持っていないが、私は、Python 2.7とPython 2.7と喘鳴raspianでDebianのジェシーにブレイクスの知見を確認することができます。 – joebob

+0

また、新しいバージョンのURLが、従来のバージョン(https://www.google.com/voice/bではなくhttps://voice.google.com/u/0/)と異なることに気付きました/ 0。古いURLを現代のものに置き換えても、私にはエラーが出ますが、これも同様に行う必要があると確信しています。残念ながら、私は電子メールを送って「フィードバック」フォームを提出しても、Googleからのサポートやフィードバックはありませんでした。 – TobyTobyo

答えて

0

。返信されるページは、と大幅に異なります。前に送信されたものと比べて、javascript/ajaxの違いがです。

私はそれをちょっとやっていて、これまでに含まれていた「特別な」セッショントークンがないことを追跡しました。 PyGoogleVoiceは、Googleから返送されたHTMLページ内の文字列リテラル "_rnr_se"を検索して、セッション値をスクラップします。その文字列が見つからないため、ログインに失敗したと考えられます。私が知ることから、Webクライアントを模倣するために、url /関数呼び出しを元に戻すためにPGVにトークンが必要です。

この変数を取得するjavascript関数があります。この関数は、渡される代わりに、HTMLページにハードコードされています。私は他の人が新しいコードをいじくり回すのを助けるおよび取得する方法を見つけ出すことができますので、私は私の調査結果を共有したいと考え出し

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()); 
}; 

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_); 
}; 

そして、呼び出しを行う、それはそうのような値を使用しますこの新しいバージョンとやり取りします。そのxsrfTokenまたは_rnr_se値を取得する新しい方法が見つかると、それほど遠く離れていないかもしれません。

私は現時点で少し時間が足りませんが、もう一度これを動作させるのが大好きです。それは、など、セッションはJavaScriptでブラウザに開始される方法を見てなど、おそらく放火犯をいじりの問題だとPGVを持っている新しいURLを模倣

+1

FYI - 新しいGVデザインとのインターフェースにどのくらいのリワークが必要かを判断するためにこれをちょっと試してみましたが、かなり大きな変更です。 私はPGVのバージョンを使ってテキストメッセージを送信しましたが(これは私が使用しているものですが)、概念的な検証のためのものではありません。 – NumericOverflow

+0

実際には、API呼び出しを行うために必要な特別なソースは、もは​​や "_rnr_se"トークンではなく、サインイン時にクッキーとして渡される "gvx"トークンになっているようです。どのページが一貫してそのgvx cookieを作成するのかはまだ分かりません.2因子を使用してサインインしたときにキャプチャできるようですが、パスワードのみのサインインを行うときは必ずしもそうとは限りません。このCookieを信頼できる方法で追跡してGVoice APIを初期化できるようにするためには、pygooglevoiceで新しいバージョンを使用する必要があります。 – NumericOverflow

+0

私たちはフォロー・アイ・コンセプト・モッズといくつかのコメントを共有して、それに従うことができますか? – TobyTobyo

0

パー区マンディ:gvoiceコマンドラインの

新バージョンSMSのテキストメッセージが利用可能です。これは、Googleの新しい最新の「AngularJS」gvoice Webインターフェイスで動作するように修正されています。誰かが不思議に思うように、それを働かせるための小さな変化でした。 アップグレードするには、シェルにこれらのコマンドを貼り付けます。

cd ~ 

git clone https://github.com/pettazz/pygooglevoice 

cd pygooglevoice 

python setup.py install 

cp -p bin/gvoice /usr/bin/. 

pip install --upgrade BeautifulSoup 

https://pbxinaflash.com/community/threads/sms-with-google-voice-is-back-again.19717/page-2#post-129617

関連する問題