问题描述
我对Splash还是很陌生,因此我能够在Ubuntu 18上(通过Splash / Docker)在Splash上安装Splash,这为该页面提供了不同的结果: https://www.overstock.com/Home-Garden/Area-Rugs/31446/subcat.html
我尝试将Splash中的用户代理更改为此:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/84.0.4147.135 Safari/537.36
因此,这使得Splash脚本如下:
function main(splash,args)
splash:set_user_agent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/84.0.4147.135 Safari/537.36'
)
assert(splash:go(args.url))
assert(splash:wait(0.5))
return {
html = splash:html(),png = splash:png(),har = splash:har(),}
end
如何使Splash呈现此页面?
解决方法
似乎overstock.com
需要一个Connection
和Accept
标头。将其添加到您的请求,它应该可以正常工作。
在Postman上测试,带有和不带有Connection: keep-alive
&& Accept: */*
标头;我得到了相同的错误页面:
添加上面的两个标题后:
因此,您的请求应进行相应的编辑:
function main(splash,args)
splash:set_custom_headers({
["Connection"] = "keep-alive",["Accept"] = "*/*",})
assert(splash:go(args.url))
assert(splash:wait(0.5))
return {
html = splash:html(),png = splash:png(),har = splash:har(),}
end