我需要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"