で単語の意味を理解するためにFirefox
// Chrome
...全体を呼び出したくなかったので、ダウンロードしたファイルの内容をインポートし、ダウンロードしたファイルから翻訳をインポートするコードを書くことにしました。しかし、最初の段階で詰まった。Opera
Google translate
shell script
wget
translate.google.hu
たとえば、単語の翻訳(engからhunへ)を知りたい場合「熱心な」頑張ります
$ wget https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast
しかし、wget
私が入力したページはダウンロードされません。
マイブラウザのアドレスバーに移動します。代わりに、私は次のようになります。
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
実際に起こっていることは次のとおりです。
- 実行中のURL
wget
はhttps://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'