SearXNG使用之403:Forbidden

249 阅读2分钟

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数据格式。

问题解决:

  1. 首先进入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/目录下

searxng配置文件1.png

  • 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>
  1. 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:克隆文件,名字随意

ll.png

  • 2.2. 使用vi或vim编辑searxng_settings.yml文件
vim searxng_settings.yml

searxng配置文件2.png

  • 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  

3.png

  1. 再次通过浏览器访问http://localhost:8080/search?q=hello&format=json,成功获取数据结果。 4.png