SearXNG使用之403:Forbidden
问题说明:
使用docker部署了SearXNG,并通过SearchAPI浏览器访问http://localhost:8080/search?q=hello&format=json(这里以你部署的实际地址端口为准)测试其是否部署成功,但是浏览器却报错:
Forbidden
You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.
原因分析:
原因就是在访问资源时限制了响应数据格式format=json,但是SearXNG默认只启用了html格式,需要在SearXNG的settings.yml配置文件中配置其支持json数据格式。
问题解决:
- 首先进入SearXNG容器内部,查看settings.yml文件内容,找到配置formats的那一项,并添加上SearXNG支持的所有数据格式,保存退出,并重启容器即可。
- 1.1.进入searxng容器内部
docker exec -it 容器名或ID /bin/sh
注:这里使用/bin/bash会报错,因为searxng是轻量级镜像,默认只安装了/bin/sh,bash过于庞大
- 1.2.查看settings.yml文件
cat /etc/searxng/settings.yml
注:searxng的配置文件默认在/etc/searxng/目录下
- 1.3. 添加内容如下:
formats:
- html
- json
- rss
- csv
拓展一下另外两种数据格式:
CSV格式(逗号分隔值):纯文本表格数据格式,示例
姓名,年龄,城市
张三,18,贵阳
李四,19,沈阳
RSS格式(Really Simple Syndication):基于xml标签的网络内容聚合格式,示例
<rss>
<channel>
<title>新闻网站</title>
<item>
<title>最新新闻标题</title>
<link>https://example.com/news</link>
<description>新闻摘要...</description>
</item>
</channel>
</rss>
- OK,正片开始,由于searxng容器没有安装vi或vim,甚至你也没法通过yum install vim去安装,因为他连yum也没有,所以只能通过将配置文件从容器内复制到主机中再使用vim修改,然后再将修改好的文件复制回容器,最后重启容器服务即可(这里不推荐使用echo命令去追加内容,容易覆盖或格式出错导致配置内容不可用)。
- 2.1. 将配置文件复制到主机,通过 ll 命令可查看文件是否复制成功(注意:以下命令均在容器外部执行)
docker cp 容器名或ID:/etc/searxng/settings.yml ./searxng_settings.yml
注:searxng_settings.yml:克隆文件,名字随意
- 2.2. 使用vi或vim编辑searxng_settings.yml文件
vim searxng_settings.yml
- 2.3. 将修改好的searxng_settings.yml文件复制回容器
docker cp ./searxng_settings.yml 容器名或ID:/etc/searxng/settings.yml
- 2.4. 重启容器再次进去容器内部查看配置文件,可以发现配置成功
docker restart 容器名或ID
docker exec -it 容器名或ID /bin/sh
cat /etc/searxng/settings.yml