Acessando o Google-translate via wget

4

Eu não quero chamar todo o Firefox / Chrome / Opera ... para descobrir o significado de uma palavra com o Google translate , então decidi escrever um shell script que usa wget para obter o conteúdo de translate.google.hu e obtém a tradução do arquivo baixado. Mas eu fico preso no primeiro passo.

Por exemplo se eu quiser descobrir a tradução (de eng para hun) da palavra 'Enthusiast' eu tentaria

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

mas wget não faz o download da página que recebo se eu digitar

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

na barra de endereços do meu navegador. Em vez disso, recebi o seguinte:

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.

E eu estou esperando e esperando e esperando ... finalmente eu pressione ENTER:

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

Alguém poderia resolver meu problema?

(Estou usando o OpenSuse Linux 13.2)

UPDATE De acordo com [Alexander Batischev] eu tentei

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

Resolveu o problema de executar em segundo plano e passou para o endereço correto (em vez de criar a variável local 'tab') ^. ^ ' Mas recebo o mesmo erro até o 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.
    
por Tom Solid 02.05.2016 / 20:42

3 respostas

5

Quando você executa este comando:

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

o que realmente acontece é:

  • você executa wget com o URL " link ";
  • e comercial significa que wget será executado em segundo plano;
  • uma variável chamada tab é definida e recebe um valor wT#en/hu/Enthusiast .

A razão para tudo isso é que o shell reserva alguns caracteres, incluindo E comercial, para coisas especiais. Para evitar que o shell interprete oe comercial, use aspas:

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

Com isso resolvido, você ainda está recebendo uma resposta "Proibida".

É uma corrida entre clientes que querem contornar a interface e os provedores que não querem deixá-los. O Google obtém sua receita de anúncios e sabe que seu script não exibirá nenhum. Assim, eles estão tomando medidas para proibir qualquer acesso, mas via navegador.

As únicas pessoas que podem dizer exatamente por que você é "Proibido" são os engenheiros do Google. Dito isto, as técnicas mais fáceis são bem conhecidas.

Um dos mais fáceis é o bloqueio por "string do agente do usuário". Esta é uma string que identifica a marca e a versão do cliente (seu navegador ou wget). Parece assim:

Wget/1.16.3 (linux-gnu)

O cliente envia essa string a cada solicitação. O servidor pode usá-lo para ajustar a aparência do resultado ou negar o acesso, como no seu caso.

wget aceita --user-agent flag onde você pode especificar a string do agente do usuário a ser enviada. Para imitar o seu próprio navegador, você pode digitar "o que é meu agente de usuário" no mesmo Google e copiar a string de lá :) Em seguida, basta passá-lo para wget da seguinte forma:

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'
    
por 02.05.2016 / 20:53
4

Um aspecto do seu problema é que você deve usar aspas para evitar problemas com os comandos do shell, como & amp ;. Mas este não é o único problema. Muitos sites se recusam a atendê-lo se você estiver usando um bot ou programa como o wget. Então você tem que mudar o agente do usuário.

Vá para:

link

Este site mostra o uso do seu navegador para você. Então corra:

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

Uma opção mais inteligente é usar o Google Chrome. Abra o Chrome, pressione F12, vá para o link . Em seguida, clique com o botão direito do mouse na primeira solicitação, que é translate.google.com, e escolha "Copiar como cURL". Então você pode usar o comando para solicitar a página (quase) como Se você estiver usando o Google Chrome. Você pode usar "-o" em cURL para salvá-lo como um arquivo, ou você pode converter o comamnd para aqueles utilizáveis em wget.

EstafuncionalidadedoChromeestádocumentadaaqui:

link

Por favor note que às vezes quando você recebe a mensagem "Proibido", você tem que esperar um pouco, ou ir ao site usando o seu navegador e responder uma pergunta como o Captcha para poder continuar com o seu pedido.

E, finalmente, você deve verificar "termos de serviço" antes de usá-lo de uma maneira particular. Eu não sei se você está fazendo a coisa certa, então, por favor, confira você mesmo.

    
por 03.05.2016 / 15:31
0

Esta solução envia dados selecionados texto para o Google translate, obtém o resultado com wget e o exibe criando scripts que podem ser executados com atalhos. (O script baseado no Zenity não parece funcionar por causa de algum bug, eu não mencionei isso.)

Instale algumas ferramentas, se ainda não estiverem instaladas:

sudo apt-get install libnotify-bin wget xsel xclip

Script para traduzir uma seleção e fornecer resultado na notificação pop-up da área de trabalho:

gedit notitrans

com:

#!/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}')"

torne-o executável

chmod +x ~/notitrans

mova-o da seguinte forma:

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

Script para exibir a tradução em uma notificação na área de trabalho E copiar automaticamente a tradução para a área de transferência :

#!/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"

Torne-o executável.

Otextoacimaserátraduzidoparaoinglês.Paraalterarisso,substituaenporoutrosdeacordocomo código de duas letras .

    
por 08.02.2017 / 16:27