2011-08-04 16 views
0

javascriptスクリプトの内容を取得する代わりに、実行する代わりに、その内容を取得したいと考えています。PythonでJavascriptを解凍する方法

編集:PythonがJavaScriptコードを実行していないことを理解しています。問題は、このオンラインのJSスクリプトをリクエストすると、実行されるということです。私はスクリプトの内容を取得することができません。私は、スクリプトの内部がどのように見える約知っている

def request(self, uri): 
    data = None 
    req = urllib2.Request(uri, data, self.header) 
    response = urllib2.urlopen(req) 
    html_text = response.read() 
    return html_text.decode() 

が、私が得るすべて:たぶん私が欲しいのは私のコードは、JSファイルを要求するようになりますので、http://jsunpack.jeek.org/dec/go

ようなスクリプトをデコードすることですリクエストが発行された後に、「ロードされた」メッセージが表示されます。私の推測では、JSコードが実行されることです。コードをリクエストする方法はありますか?

+0

私はちょっと混乱しています。 JavaScriptはPythonからどのように実行されますか? PythonはJSの実行方法を知らない(JSとPythonはまったく異なる2つの言語である)。 –

+0

JSONデータの取得についてお話ししていますか? – hughdbrown

+0

スクリプトはクライアント側で実行されます。私はPythonがそれを実行していないと思っていますが、PythonがHTMLインタプリタ/ブラウザとして使うものは何でも –

答えて

2

urllib2にはHTMLまたはJavaScriptインタープリタはありません。このモジュールは、リソースをフェッチしてrawに返します。受け取ったJavaScriptコードを実行しようとはしません。期待した応答が得られない場合は、wgetなどのツールでURLを確認するか、WiresharkまたはFiddlerとのネットワーク接続を監視して、実際にサーバーが何を返すかを確認してください。

(ここでdecode()のみUnicode文字-使用して、おそらく良いアイデアではありませんデフォルトの文字エンコーディングを、にHTTPレスポンスボディのバイトに変換されます。)

ETA:

私は推測します私が欲しいのは、Javascriptをデコードすることです。jsunpack.jeek.org/dec/go

ああ、まったく別のゲームです。そのhereのソースを入手できますが、MozillaのJavaScriptエンジンであるSpiderMonkeyをインストールして、ダウンロードしたJavaScriptを実行する必要があります。

難読化されたJavaScriptを実行せずに自動的にアンパックする方法はありません。これは、パッキングコードが何かを行うことができ、JSはチューリング完全言語です。このツールはすべて、packers/obfuscatorsが通常使用するevalのような関数のラッパーコードで実行します。残念ながら、このサボタージュは簡単に検出可能です。したがって、マルウェアであれば、解凍しようとしていると、成功するほど頻繁に失敗します。

1

わかりません。私はあなたのコードの簡易版を行うと、いくつかのJavaScriptを持っているのは間違いないだろうURIでそれを実行した場合:

>>> import urllib2 
>>> res = urllib2.urlopen("http://stackoverflow.com/questions/6946867/how-to-unpack-javascript-in-python") 

そして、あなたは解像度印刷((またはres.decodeを))は、Javascriptを無傷です。

urlopenを実行すると、ソースが提供する文字ストリームを取得する必要があります。それを使って何かをすることはあなた次第です(htmlとしてレンダリングし、javascriptとして解釈するなど)。

関連する問題