在 curl 中使用 cookies 设置语言

在 curl 中使用 cookies 设置语言

我需要curl | grep来自网页的一些数据,但是将语言设置为英语。在浏览器中,我可以通过单击链接来完成此操作。

我首先获取SelectCulture页面并将 cookie 保存在文件中,然后使用它来获取我需要的页面:

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

问题是,在第一次运行时,当文件cookies尚不存在时,不知何故语言不会改变(你会得到意大利语奥斯皮特代替客人),而脚本从第二次运行开始就可以工作。

例如,这避免了使用临时文件而不是静态文件的需要。此外,奇怪的是,我无法让它在一次运行中工作。

有什么建议吗?

答案1

浏览器通常会在每个请求中发送可接受的语言列表。 CMS 通常在未设置 cookie 时使用此功能。 (理论上,cookie 只是后备,语言设置是正确的。)这 <span>Hello Guest</span>对我来说是:

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

相关内容