Open Colin-XKL opened 2 years ago
请教一下。用browserless抓取网站"https://www.sciencedirect.com/journal/journal-of-financial-economics"。把网址粘贴到payload的url后面字段,其它代码和你上面的例子一样。返回结果是一个禁止访问的页面。检查结果有 "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/106.0.5249.0 Safari/537.36"。
直接用部署了docker版browserless来检查,发现只要把headless选项关掉,网页就能正常访问。如果打开,则返回结果和上面一样,且user-agent也一样。那就应该是这个user-agent的问题。但是试了很多次,在Post Agent里不知道怎么定制user_agent。返回结果一直包含 "HeadlessChrome/106.0.5249.0"。
请问Post Agent里用什么字段来自定义user-agent?右侧给出的那些字段都试过不起作用,要么是没用对。
User Agent 放到post请求的header里就好 "headers": { "Cache-Control": "no-cache", "Content-Type": "application/json", "AAA": "BBB" },
具体的格式和字段的值可以多参考浏览器开发人员工具Network网络选项卡里的信息
@ernestyu
@Colin-XKL
User Agent 放到post请求的header里就好 "headers": { "Cache-Control": "no-cache", "Content-Type": "application/json", "AAA": "BBB" },
具体的格式和字段的值可以多参考浏览器开发人员工具Network网络选项卡里的信息
@ernestyu
谢谢,已搞定。貌似在Huginn这里设置无效,是在browserless docker启动时,要加入参数,比如,$ docker run -e "DEFAULT_HEADLESS=false" -p 3000:3000
, 这样才可以正常使用。
如果是在群晖里跑borwserless,就要在环境变量里加上 DEFAULT_HEADLESS
,把值设置为 false。这样它发送出去的header就是正常Chrome,而不是HeadlessChrome
嗯搞定了就好,也感谢你的反馈,我回头更新一下文章
折腾了一下午,一直报错,求教大佬指点。 [ { "body": "Not Found\n", "status": 404, "headers": { "Content-Type": "text/plain; charset=UTF-8", "Date": "Tue, 11 Jun 2024 12:58:07 GMT", "Connection": "keep-alive", "Keep-Alive": "timeout=5", "Transfer-Encoding": "chunked" } } ] 换什么网址都是这个报错,用ucrl测试就没有问题,可以正常返回结果: curl -X POST http://192.168.31.54:3000/content \ -H "Cache-Control: no-cache" \ -H "Content-Type: application/json" \ -d '{"url": "https://www.baidu.com/"}'
@Yafeiml 折腾了一下午,一直报错,求教大佬指点。 [ { "body": "Not Found\n", "status": 404, "headers": { "Content-Type": "text/plain; charset=UTF-8", "Date": "Tue, 11 Jun 2024 12:58:07 GMT", "Connection": "keep-alive", "Keep-Alive": "timeout=5", "Transfer-Encoding": "chunked" } } ] 换什么网址都是这个报错,用ucrl测试就没有问题,可以正常返回结果: curl -X POST http://192.168.31.54:3000/content \ -H "Cache-Control: no-cache" \ -H "Content-Type: application/json" \ -d '{"url": "https://www.baidu.com/"}'
你 huginn里面是怎么配置的, 能否贴一下
@Yafeiml 还有需要确认下你使用的 browserless 是哪个版本。 如果是使用 rssman 里面配置的, 或者指定的镜像为browserless/chrome, 那应该没问题。 如果是使用的官网文档里最新的 ghcr.io/browserless/chromium, 那情况可能会有点不一样, 这个是 v2 版本,api 等方面会有一些不同
@Colin-XKL @Yafeiml 还有需要确认下你使用的 browserless 是哪个版本。 如果是使用 rssman 里面配置的, 或者指定的镜像为browserless/chrome, 那应该没问题。 如果是使用的官网文档里最新的 ghcr.io/browserless/chromium, 那情况可能会有点不一样, 这个是 v2 版本,api 等方面会有一些不同
配置就是使用您提供的,期间也做过各种调整,加useragent,调整参数值等等: { "post_url": "http://192.168.31.54:3000/chromium/content", "expected_receive_period_in_days": "1", "content_type": "json", "method": "post", "payload": { "url": "https://pccz.court.gov.cn/pcajxxw/pcgg/ggdh?lx=0" }, "headers": { "Cache-Control": "no-cache", "Content-Type": "application/json" }, "emit_events": "true", "no_merge": "false", "output_mode": "clean" }
另外browserless使用的是官方(2.13.0)版本,应该是最新的,但是看文档API的使用方法和路径应该是没有差别的,并且curl可以正常获取页面内容,感觉是Post Agent的格式问题,但是官方以及各路搜索都没有找到相关的资料,有点麻,感谢大佬回复。
补充下browserless的错误日志: browserless.io:server:trace Handling inbound HTTP request on "POST: /content" +13s browserless.io:server:error No matching HTTP route handler for "POST: http://0.0.0.0:3000/content?launch=%7B%7D" +13s 感觉像是Post Agent调用方式出错了。
另外browserless使用的是官方(2.13.0)版本,应该是最新的,但是看文档API的使用方法和路径应该是没有差别的,并且curl可以正常获取页面内容,感觉是Post Agent的格式问题,但是官方以及各路搜索都没有找到相关的资料,有点麻,感谢大佬回复。
我看了下 v2 版本的文档, content这个接口没有太大变化应该是可以用的. 假设你的 browserless 实例部署在192.168.31.54:3000
, huginn post agent 里面post url 为 http://192.168.31.54:3000/content
这样应该就可以了, 再试下呢
另外browserless使用的是官方(2.13.0)版本,应该是最新的,但是看文档API的使用方法和路径应该是没有差别的,并且curl可以正常获取页面内容,感觉是Post Agent的格式问题,但是官方以及各路搜索都没有找到相关的资料,有点麻,感谢大佬回复。
我看了下 v2 版本的文档, content这个接口没有太大变化应该是可以用的. 假设你的 browserless 实例部署在
192.168.31.54:3000
, huginn post agent 里面post url 为http://192.168.31.54:3000/content
这样应该就可以了, 再试下呢
试过多次了确实不行,browserless的各种配置也都试过多种,感谢您的回答,我抽空继续查找下原因。
我搭了一个干净的环境测试了下, v2 版本的 browserless 与 最新版本的 huginn 协作时确实有问题. 暂时没有很好的解决方案, 可以考虑使用 v1 版本的 browserless (镜像为 browserless/chrome
)或者 使用PhantomJS来渲染页面.
docker hub 上的这个页面默认就是 v1 版本的, 可以直接使用. https://hub.docker.com/r/browserless/chrome
@Yafeiml
我搭了一个干净的环境测试了下, v2 版本的 browserless 与 最新版本的 huginn 协作时确实有问题. 暂时没有很好的解决方案, 可以考虑使用 v1 版本的 browserless (镜像为
browserless/chrome
)或者 使用PhantomJS来渲染页面.docker hub 上的这个页面默认就是 v1 版本的, 可以直接使用. https://hub.docker.com/r/browserless/chrome
@Yafeiml
原来是版本问题,大佬给力,看来新不一定是好。 ![Uploading PixPin_2024-06-14_09-06-48.jpg…]()
https://blog.colinx.one/posts/huginn%E6%8C%87%E5%8D%97%E4%B8%BA%E4%BB%BB%E6%84%8F%E7%BD%91%E7%AB%99%E5%88%B6%E4%BD%9Crss/
Huginn使用多个不同功能的Agent组合搭配来实现一系列功能,一个Agent可以执行特定的操作,并产生一个Event,你可以指定他产生的