Use cookies em curvas para definir o idioma

2

Eu preciso de curl | grep de alguns dados de uma página da Web, mas após definir o idioma para inglês. Em um navegador, posso fazer isso clicando em um link.

Primeiro, obtenho a página SelectCulture e salve o cookie em um arquivo, depois eu o uso para obter a página de que preciso:

#!/bin/bash

#tmp_file="$(mktemp)"
tmp_file="cookies"

curl -s \
    --location \
    --cookie "$tmp_file" \
    --cookie-jar "$tmp_file" \
    --user-agent Mozilla/4.0 \
    --data-urlencode "ReturnUrl=http://it.bca-europe.com/Default.aspx" \
    "http://it.bca-europe.com/Home/SelectCulture/en-GB-BDIT" | egrep "Ospite|Guest"

curl -s \
    --location \
    --cookie "$tmp_file" \
    --user-agent Mozilla/4.0 \
    "http://it.bca-europe.com/Default.aspx" | egrep "Ospite|Guest"

O problema é que na primeira execução, quando o arquivo cookies ainda não existe, de alguma forma o idioma não muda (você obtém o italiano Ospite em vez de Convidado ), enquanto o script funciona a partir da segunda execução.

Isso, por exemplo, evita a necessidade de usar um arquivo temporário em vez de um arquivo estático. Além disso, estranhamente, não consigo trabalhar em uma única corrida.

Algum conselho?

    
por neurino 13.03.2012 / 23:34

1 resposta

2

Um navegador geralmente envia uma lista de idiomas aceitos a cada solicitação. Os CMSs costumam usar isso quando nenhum cookie é definido. (Em teoria, o cookie é apenas um substituto e as configurações de idioma estão corretas.) Isso resulta em <span>Hello Guest</span> para mim:

curl -s  --location -H 'Accept-Language: en' "http://it.bca-europe.com/Home/SelectCulture/en-GB-BDIT" | egrep "Ospite|Guest"
    
por 14.03.2012 / 13:59

Tags