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'

答え2

問題の1つの側面は、&などのシェルコマンドの問題を回避するために引用符を使用する必要があることです。しかし、それが唯一の問題ではありません。多くのウェブサイトでは、wgetなどのボットやプログラムを使用している場合はサービスを拒否します。したがって、ユーザーエージェントを変更する必要があります。

行く:

http://www.whatsmyua.com/

ウェブサイトにはあなたのブラウザのユーザー名が表示されます。次に、次を実行します。

wget -U "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405" 'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast' -O Enthusiast.html

より賢い選択は、Google Chromeを使用することです。 Chromeを開き、F12を押して次に進みます。https://translate.google.com/。次に、最初のリクエスト(translate.google.com)を右クリックして[cURLにコピー]を選択します。その後、このコマンドを使用して、Google Chromeを使用しているかのように(ほぼ)ページを要求できます。 cURLで「-o」を使用してファイルに保存したり、コマンドをwgetで利用可能なコマンドに変換したりできます。

ChromeからcURLにコピー

Chromeのこの機能については後述します。

http://www.lornajane.net/posts/2013/chrome-feature-copy-as-curl

場合によっては「禁止された」というメッセージが表示された場合は、そのサイトにリクエストを送信し続ける前に一定時間待つか、ブラウザを使用してサイトにアクセスして確認コードなどの質問に答える必要があります。

最後に、特定の方法で使用する前に利用規約を確認する必要があります。しっかりしているのか分からないので、直接確認してみてください。

答え3

このソリューション選択したテキストをGoogle翻訳に送信し、wget ショートカットを使用して実行できるスクリプトを作成して結果を取得して表示します。 (私が言及していないバグのためにZenityベースのスクリプトが機能しないようです。)

まだインストールしていない場合は、いくつかのツールをインストールしてください。

sudo apt-get install libnotify-bin wget xsel xclip

選択内容を翻訳し、結果をポップアップデスクトップ通知として提供するスクリプト:

gedit notitrans

そして:

#!/usr/bin/env bash
notify-send --icon=info "$(xsel -o)" "$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=$(xsel -o | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"

実行可能にする

chmod +x ~/notitrans

次のように移動してください。

sudo mv ~/notitrans /usr/local/bin/

スクリプトデスクトップ通知に翻訳を表示し、自動的にクリップボードに翻訳をコピーします。:

#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
echo "$translate" | xclip -selection clipboard
notify-send --icon=info "$text" "$translate"

実行可能にしてください。

ここに画像の説明を入力してください。

上記は英語に翻訳されています。en次の変更に従って他のものと交換するには2文字コード

関連情報