Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Huginn指南:为任意网站制作RSS :: Colinx Blog — Colin的个人博客 #42

Open
Colin-XKL opened this issue May 9, 2022 · 12 comments

Comments

@Colin-XKL
Copy link
Owner

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,你可以指定他产生的

@ernestyu
Copy link

请教一下。用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?右侧给出的那些字段都试过不起作用,要么是没用对。

@Colin-XKL
Copy link
Owner Author

Colin-XKL commented Sep 11, 2022

User Agent 放到post请求的header里就好
"headers": {
"Cache-Control": "no-cache",
"Content-Type": "application/json",
"AAA": "BBB"
},

具体的格式和字段的值可以多参考浏览器开发人员工具Network网络选项卡里的信息

@ernestyu

@ernestyu
Copy link

@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

@Colin-XKL
Copy link
Owner Author

嗯搞定了就好,也感谢你的反馈,我回头更新一下文章

@Yafeiml
Copy link

Yafeiml commented Jun 11, 2024

折腾了一下午,一直报错,求教大佬指点。
[
{
"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/"}'

@Colin-XKL
Copy link
Owner Author

@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里面是怎么配置的, 能否贴一下

@Colin-XKL
Copy link
Owner Author

@Yafeiml 还有需要确认下你使用的 browserless 是哪个版本。 如果是使用 rssman 里面配置的, 或者指定的镜像为browserless/chrome, 那应该没问题。 如果是使用的官网文档里最新的 ghcr.io/browserless/chromium, 那情况可能会有点不一样, 这个是 v2 版本,api 等方面会有一些不同

@Yafeiml
Copy link

Yafeiml commented Jun 11, 2024

@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调用方式出错了。

@Colin-XKL
Copy link
Owner Author

另外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 这样应该就可以了, 再试下呢

@Yafeiml
Copy link

Yafeiml commented Jun 12, 2024

另外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的各种配置也都试过多种,感谢您的回答,我抽空继续查找下原因。

@Colin-XKL
Copy link
Owner Author

我搭了一个干净的环境测试了下, v2 版本的 browserless 与 最新版本的 huginn 协作时确实有问题. 暂时没有很好的解决方案, 可以考虑使用 v1 版本的 browserless (镜像为 browserless/chrome )或者 使用PhantomJS来渲染页面.

docker hub 上的这个页面默认就是 v1 版本的, 可以直接使用. https://hub.docker.com/r/browserless/chrome

@Yafeiml

@Yafeiml
Copy link

Yafeiml commented Jun 14, 2024

我搭了一个干净的环境测试了下, 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…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants