wget経由でGoogle翻訳にアクセスする

wget経由でGoogle翻訳にアクセスする

で単語の意味を理解するためにFirefox// Chrome...全体を呼び出したくなかったので、ダウンロードしたファイルの内容をインポートし、ダウンロードしたファイルから翻訳をインポートするコードを書くことにしました。しかし、最初の段階で詰まった。OperaGoogle translateshell scriptwgettranslate.google.hu

たとえば、単語の翻訳(engからhunへ)を知りたい場合「熱心な」頑張ります

$ wget https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast

しかし、wget私が入力したページはダウンロードされません。

https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast

マイブラウザのアドレスバーに移動します。代わりに、私は次のようになります。

solid@skynet:~> wget https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast

[1] 2143

solid@skynet:~> --2016-05-02 08:23:24--  https://translate.google.hu/?hl=hu
Resolving translate.google.hu (translate.google.hu)... 216.58.209.163, 2a00:1450:400d:806::2003
Connecting to translate.google.hu (translate.google.hu)|216.58.209.163|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-02 08:23:24 ERROR 403: Forbidden.

待って、待って、待っていたのですが…ついにEnterキーを押しました。

[1]+  Exit 8                  wget https://translate.google.hu/?hl=hu

誰でも私の問題を解決できますか?

(私はOpenSuse Linux 13.2を使用しています)

修正する[Alexander Batischev]によると、私は試しました

 $ wget 'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast'

バックグラウンドで実行され、正しいアドレスをwgetに渡す問題を解決します(ローカル変数 'tab'を生成する代わりに)^.^' しかし、次回まで同じエラーが発生しますForbidden

$ wget 'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast'

--2016-05-03 14:57:48--  https://translate.google.hu/?hl=hu&tab=wT 
Resolving translate.google.hu (translate.google.hu)... 216.58.209.163,  2a00:1450:400d:806::2003
Connecting to translate.google.hu
(translate.google.hu)|216.58.209.163|:443... connected. HTTP request
sent, awaiting response... 403 Forbidden
2016-05-03 14:57:48 ERROR 403: Forbidden.

ベストアンサー1

このコマンドを実行すると:

wget https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast

実際に起こっていることは次のとおりです。

  • 実行中のURLwgethttps://translate.google.hu/?hl=hu";
  • &記号はwgetバックグラウンドで実行されることを意味します。
  • tabという変数を定義し、値を取得しますwT#en/hu/Enthusiast

その理由は、シェルがアンパサンドを含む特別な文字のためにいくつかの文字を予約しているからです。シェルがアンパサンドを解釈しないようにするには、引用符を使用します。

wget 'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast'

解決された後も、まだ「禁止された」応答を受け取ります。

インターフェースを迂回したい顧客とそうでないプロバイダーとの間の競争。 Google は広告から収益を得ており、スクリプトに何も表示されないことを認識しています。そのため、ブラウザを介したアクセス以外のアクセスをブロックする措置を講じています。

あなたが「禁止」された理由を正確に伝えることができる唯一の人はGoogleエンジニアです。つまり、より簡単な技術が知られている。

最も簡単な方法の1つは、「ユーザーエージェント文字列」を介してブロックすることです。これは、クライアント(ブラウザまたはwget)のブランドとバージョンを識別する文字列です。次のようになります。

Wget/1.16.3 (linux-gnu)

クライアントは、すべての要求とと​​もにこの文字列を送信します。サーバーはこれを使用して、あなたの場合のように結果の外観を調整したりアクセスを拒否したりできます。

wget--user-agent送信するユーザーエージェント文字列を指定できる許可フラグ。自分のブラウザを模倣するには、同じGoogleに「私のユーザーエージェントとは何ですか?」と入力し、そこから文字列をコピーします。 :) 次に、wget次のように渡します。

wget --user-agent='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0' \
    'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast'

おすすめ記事