Rat's

使用Searx搭建一个私人的搜索引擎平台,可展现Google/Bing等70多种搜索网站的搜索结果
说明:现在百毒各种犀利操作导致很多人都转向了谷歌,不过由于谷歌在国内被墙,对一些人来说访问起来是有点困难的,除了挂...
扫描右侧二维码阅读全文
27
2019/01

使用Searx搭建一个私人的搜索引擎平台,可展现Google/Bing等70多种搜索网站的搜索结果

说明:现在百毒各种犀利操作导致很多人都转向了谷歌,不过由于谷歌在国内被墙,对一些人来说访问起来是有点困难的,除了挂梯子以外,反代谷歌也可以,很久前就发过这种教程→传送门,不过最近找到了个好项目Searx,一个基于Python的完全开源免费搜索引擎平台,为你提供来自GoogleBingYahoo70多种各大视频、图片、搜索、磁力等网站结果展示,并对搜索结果进行优化,同时不会存储你的任何搜索信息,搭建也很方便,有兴趣的可以搭建给需要谷歌的同事或朋友用下。

截图

请输入图片描述
请输入图片描述

手动安装

项目地址:https://github.com/asciimoo/searx

1、安装pip

#CentOS 6.x 32位
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y python-pip

#CentOS 6.x 64位
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y python-pip

#CentOS 7.x
yum install -y epel-release
yum install -y python-pip
#如果CentOS 7安装出现No package python-pip available,可以用以下命令进行安装
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

#Debian/Ubuntu系统
apt-get -y update
apt-get -y install python-pip

2、安装git

#Debian/Ubuntu系统
apt-get -y install git

#CentOS系统
yum -y install git

3、编辑Searx

#拉取源码
git clone https://github.com/asciimoo/searx.git
#安装依赖
cd searx
pip install -r requirements.txt
#编辑配置文件
nano searx/settings.yml

修改名称什么参数,应该都看的懂,自行设置,这里只说下4种参数:

language:为搜索语言,默认en-US,如果你的搜索以中文为主,那就改成zh-CN,当然这个语言在搜索界面也可以设置
port:为监听端口,默认8888,可自行修改。
bind_address:为监控地址,默认为127.0.0.1,如果需要让ip地址能被外网访问,就修改为0.0.0.0,这里建议默认,然后再用域名反代即可。
secret_key:该参数为加密密匙,可自行设置,数值可以在ssh客户端使用openssl rand -hex 16命令生成。

这里你也可以不用nano编辑器,直接使用命令修改:

#修改language,默认为中文搜索结果
sed -i 's/language : "en-US"/language : "zh-CN"/g' searx/settings.yml
#修改secret_key
sed -i "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
#修改bind_address,改了后就可以使用ip访问了,如果你使用域名的话,可以不修改
sed -i 's/bind_address : "127.0.0.1"/bind_address : "0.0.0.0"/g' searx/settings.yml
#修改port,比如修改成8000
sed -i "s/port : 8888/port : 8000/g" searx/settings.yml

更多参数设置可以参考→传送门

4、运行Searx
安装screen

#CentOS系统
yum install screen -y

#Debian/Ubuntu系统
apt-get install screen -y

后台运行:

screen -dmS searx python searx/webapp.py

然后使用ip:port访问,如果你的bind_address地址没修改,可能浏览器会访问不了,就需要反代了,方法后面会说。

如果你修改了bind_address地址为0.0.0.0,还打不开媒体界面的话,还需要开启防火墙端口,使用命令:

#CentOS 6
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
service iptables save
service iptables restart

#CentOS 7
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload

如果你开了端口还不能打开,可能还需要去服务商后台开启对应的端口。

Docker安装

这里貌似用官方的Dockerfile文件构建镜像的时候会报错,所以博主自己写了个Dockerfile文件,安装也很快。

Github地址:https://github.com/iiiiiii1/Docker-Searx

1、安装Docker

#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

2、安装git

#Debian/Ubuntu系统
apt-get -y install git

#CentOS系统
yum -y install git

3、构建镜像

#拉取源码
git clone https://github.com/iiiiiii1/Docker-Searx
#构建镜像,搜索语言默认已改成中文
cd Docker-Searx
docker build -t searx .

4、启动镜像

docker run -d --name searx -p 8888:8888 searx 

启动命令被我简化了,详细可参考→传送门,然后使用ip:8888,访问即可,映射端口可自行修改,比如-p 8000:8888

域名反代

这里是建议使用域名反代的,反代可以用NginxApacheCaddy,这里只说宝塔和Caddy。如果你网站有宝塔,就可以使用宝塔进行反代,如果没有,建议使用第2种的Caddy反代,配置很快。

1、宝塔反代
先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:8888,再启用反向代理即可。至于启用SSL就不说了,直接在站点配置就可以启用。

2、Caddy反代
安装Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

配置Caddy

#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

#http访问,该配置不会自动签发SSL
echo "www.moerats.com {
 gzip
 proxy / 127.0.0.1:8888 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "www.moerats.com {
 gzip
 tls admin@moerats.com
 proxy / 127.0.0.1:8888 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

启动Caddy

/etc/init.d/caddy start

就可以打开域名进行访问了。

3、Nginx配置
如果你使用其它的,这里就大概发个Nginx反代配置,直接添加到配置文件即可。

#在配置文件里添加
  location / {
      proxy_pass http://127.0.0.1:8888;
      proxy_set_header        Host                 $host;
      proxy_set_header        X-Real-IP            $remote_addr;
      proxy_set_header        X-Forwarded-For      $proxy_add_x_forwarded_for;
      proxy_set_header        X-Remote-Port        $remote_port;
      proxy_set_header        X-Forwarded-Proto    $scheme;
      proxy_redirect          off;
  }

最后使用的时候,记得在高级设置那里将搜索语言设置成你需要的就行了,不然搜出来的结果可能不会让你满意。

如果想设置匿名访问,可以查看该教程→传送门,参考配置匿名访问即可。

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2019 年 09 月 05 日 08 : 41 PM

发表评论

101 条评论

  1. 一枚科研狗

    我弱弱的问一句 我主要想用学术搜索,但是搭建后发现 搜索学术要么是没有内容 要么就是报错 是什么原因导致的呢? 是因为我没有配置ssl么? 报错内容是这个:Internal Server Error
    The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

  2. sockball

    请问用nginx反代以后 页面中首选项的

    "当前保存选项的搜索链接 "

    还是以 "http://127.0.0.1:8888" 本地地址开头 修改了配置中的 "base_url" 也没用,这个该设置哪里呢

  3. 干你妹

    docker搭建成功,请问如何更新searx?官网已经更新了0.16,不知道怎么更新。

    1. Rat's
      @干你妹

      最简单的就是,清空旧的,然后重新装,docker默认使用最新源码

  4. nidoyu

    我又来这边了。。。
    searx python searx/webapp.py 的时候报错是说缺少模块
    Traceback (most recent call last):
    File "searx/webapp.py", line 33, in <module>

    from searx import logger

    File "/usr/local/searx/searx/__init__.py", line 18, in <module>

    import certifi

    ImportError: No module named certifi

    1. nidoyu
      @nidoyu

      安装好以后有显示Successfully installed babel-2.7.0 certifi-2019.3.9 flask-1.0.2 flask-babel-0.12.2 idna-2.8 jinja2-2.10.1 lxml-4.3.3 pygments-2.1.3 pyopenssl-19.0.0 python-dateutil-2.8.0 pyyaml-5.1 requests-2.22.0,这个包明明有的。
      实际查看了下这个包就在
      /usr/local/lib/python3.6/site-packages/里面。。。。

      1. Rat's
        @nidoyu

        你这是python3的包,貌似不适用于searx

  5. 大神好

    自从看了RAT大佬的博客,发现域名明显不够用了。
    vps从免费的用到收费的。,。。。

    1. Rat's
      @大神好

      多折腾,你懂的就多,这是很值得的

  6. Rick Stive

    好像不能使用了,正常搭建报错:

    错误! 引擎无法获取结果。
    google (超时), wikidata (超时)
    请稍后再试,或寻找其它的 searx 实例替代。

    1. Rat's
      @Rick Stive

      一直都这样么?你是国内服务器还是

  7. 小子

    想注册个账号联系你都联系不上

    1. Rat's
      @小子

      我很少放联系方式,你加我微信吧,rats54。

  8. 春末丶冬初

    好像还是这样

    1. Rat's
      @春末丶冬初

      能打开吗?建议你百度/谷歌这个问题,这样解决的还快些。

  9. 春末丶冬初

    博主 怎么执行pip的时候报这个错误呢 [root@wenjian searx]# python searx/webapp.py
    /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.2) or chardet (2.2.1) doesn't match a supported version!
    RequestsDependencyWarning)
    CRITICAL:searx.webapp:cannot import dependency: pygments
    顺便问问博主这个博客真好看呀 是怎么做的后端呀

    1. Rat's
      @春末丶冬初

      这个错误应该问题不大,或者给个命令你升级下。
      pip uninstall urllib3
      pip uninstall chardet
      pip install --upgrade requests

  10. dalf

    Please see https://github.com/searx/searx-docker

    Or at least https://github.com/searx/searx-docker/blob/master/Caddyfile to improve HTTPS security.

  11. bingwong

    老铁,那个morty一直配置不成功。能帮忙看看吗

    1. Rat's
      @bingwong

      给下报错提示

      1. bingwong
        @Rat's

         不知道为啥,每次重新登陆ssh,gopath就改变了。导致morty自动停止。 后来改用docker-morty就没有问题了。。。搞不明白,反正弄好了,谢那

  12. 热心市民

    一些建议,Caddy反代使用次数这么频繁,建议写一篇文章,内容是多个程式需要反代Caddy的配置文件该如何写。谢谢大大,希望大大可以水一篇多程式反代Caddy配置

    1. Rat's
      @热心市民

      这个很久前水过了,https://www.moerats.com/archives/422/,具体的可以看下官方文档

  13. ali

    请问下服务器重启后就网站就打不开了,用的宝塔反代,怎么搞

    1. ali
      @ali

      已解决

  14. 阿萨德

    麻烦问一下大佬screen启动怎么关啊......ctrla a k 按了没反应

    1. Rat's
      @阿萨德

      试一下这个命令恢复窗口screen -r searx,然后Ctrl+C断开

  15. 梓瑜

    老大,输入了caddy反代配置后caddy启动失败2019/03/24 07:14:15 error inspecting server blocks: parse //aiouniya.cn {
    gzip
    proxy / 127.0.0.1:8888 {

    header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Proto {scheme}

    }
    }: net/url: invalid control character in URL

    1. Rat's
      @梓瑜

      大概就是说你格式不对,检查下格式

  16. 梓瑜

    老大我看了下你在推搬瓦工年付$47 CN2线路,1G内存/20G硬盘/1T流量,速度快,建站稳定,已购买,用来搭建这个项目怎么样啊?

    1. Rat's
      @梓瑜

      可以啊

  17. kanlee

    楼主,这个用docker安装如何加上自动启动?重启VPS后不能用了

    1. Rat's
      @kanlee

      写个开机启动容器命令就可以了,放到rc.local文件里

  18. wintsa

    拿来试手,结果吧我typecho博客给弄没了。。。怎么办

    1. Rat's
      @wintsa

      用了什么操作

      1. wintsa
        @Rat's

        直接在网站布置,反代

        1. Rat's
          @wintsa

          用的caddy?只要数据不丢就没事,都有救

  19. kai

    同问题,默认中文时首选项Internal Server Error

    1. 幻想丶一下
      @kai

      设置成台湾吧,这样不会

    2. Rat's
      @kai

      这个只能去github反映下,然后等修复了

  20. 天涯后面的天空

    国内用mijisou.com蛮不错的。我用的公共searx无法在不科学的时候返回谷歌结果...

    1. Rat's
      @天涯后面的天空

      公共searx用的国内服务器搭建的?

      1. 天涯后面的天空
        @Rat's

        我试了下searx.me可以出谷歌结果=-=
        我自己搭建的是否出现了Caddy 启动失败 !
        系统是debian,我准备换ubuntu再试试

        1. Rat's
          @天涯后面的天空

          失败可以看下启动日志。

          1. 天涯后面的天空
            @Rat's

            这样就相当绝望了

            1. Rat's
              @天涯后面的天空

              图片给你取消了,太大影响布局,用这个命令看运行日志tail -f /tmp/caddy.log

              1. 天涯后面的天空
                @Rat's

                Activating privacy features... done.
                http://:2015
                /usr/local/caddy/caddy: line 1: search.qklmlj.com: command not found ʴ|/usr/local/caddy/caddy: line 3: proxy: command not found
                /usr/local/caddy/caddy: line 4: header_upstream: command not found
                /usr/local/caddy/caddy: line 5: header_upstream: command not found
                /usr/local/caddy/caddy: line 6: header_upstream: command not found
                /usr/local/caddy/caddy: line 7: header_upstream: command not found
                /usr/local/caddy/caddy: line 8: syntax error near unexpected token `}'
                /usr/local/caddy/caddy: line 8: ` }'

                1. Rat's
                  @天涯后面的天空

                  你这个配置文件有问题,重新把配置Caddy那步来一遍

  21. AiharaMei

    被谷歌当成机器人了 有办法恢复吗

    1. Rat's
      @AiharaMei

      好像等于是被拉黑了,只能换ip了

  22. tangspoon

    为什么按照你的教程,搭建好之后显示:502 bad Gateway

    1. Rat's
      @tangspoon

      502一般就是没搭建好

      1. 安静
        @Rat's

        那应该怎么办啊

        1. Rat's
          @安静

          日志都不清楚,所以我也不知道哪个环节的问题

  23. 雁陎

    这个项目用了一下,发现有时候会出现这样的情况:bing和google结果交替展示,google的结果与搜索内容有关,而bing的结果与搜索无关。所以想问一下博主,可以关掉bing的搜索结果吗

    1. Rat's
      @雁陎

      关掉bing的话,可以试试修改settings.yml文件

    2. 雁陎
      @雁陎

      刚刚又测试了一下,当搜索语言为zh时结果正常,为zh-CN时就会出现上述情况,但是好像没法改成默认zh?

  24. 逗比

    有个BUG,默认的模板如果设置中文,切换到/preferences 会报错。

    1. Rat's
      @逗比

      这个只能等作者修复了,貌似老版本没这个问题

  25. huaji

    使用nginx反代后searx首页出现page not found

    1. Rat's
      @huaji

      估计配置有问题。

  26. SaQ

    大佬,caddy反代之后https在国内打不开了

    1. Rat's
      @SaQ

      使用ip能打开?还有顺便运行下命令/etc/init.d/caddy status,看状态是不是running

  27. 缙哥哥

    这个可以在安装宝塔的基础上直接添加网站吗?一定要ssh安装?还有,开启反代后,同服务器其他网站是不是就没用了?没接触过这个,请大佬指点一二。

    1. Rat's
      @缙哥哥

      是的,需要ssh安装,可以添加网址,反代对其他网址没影响

  28. searx

    这个可以添加搜索引擎吗?preferences过一段时间就会error 不知道什么问题

    1. Rat's
      @searx

      可以添加,但得研究下。后面这个问题貌似与更改默认语言为中文有关系,你不修改语言看看。

  29. 123123

    引擎无法获取结果:

    google (unexpected crash: CAPTCHA required)

    1. Rat's
      @123123

      这个看是不是你的ip被谷歌拉黑或者当机器人了。

  30. 云天

    这个国内的鸡儿 也可以搭建吗

    1. Rat's
      @云天

      应该不能,国内可以用这个修改版项目,https://github.com/entropage/mijisou,不过搜索引擎是百度,360,搜狗等。

      1. searx
        @Rat's

        安装方法好像不一样 大佬会发这个修改项目的教程吗?

        1. Rat's
          @searx

          安装方法其实差不多,也就是需要Python3,安装python3教程可以看这个https://www.moerats.com/archives/848/,然后使用pip3 install -r requirements.txt安装依赖,再使用Python3运行就行了

          1. searx
            @Rat's

            谢谢大佬 宝塔需要依赖python2吧?如果装了python3是否会进不去面板?

            1. 江南
              @searx

              不会的,先用服务器自带的python2装宝塔,然后升python3,改链接,宝塔可以直接用。但是python3下就无法安装宝塔了。

            2. Rat's
              @searx

              只要不做软连接,也就是改动默认的版本应该没事。2和3可以共存

  31. zturns

    Ssdnodes拿来试试手大佬有没有那个刷题的源码啊

    1. Rat's
      @zturns

      什么题?

      1. zturns
        @Rat's

        刷国考、公招考试等等的,可以导入WordExcel的,

        1. Rat's
          @zturns

          暂时没看到

  32. kenshin

    有没有搜索还能点开维基的

    1. Rat's
      @kenshin

      你是说不挂梯子能打开中文维基?这种还没发现。

      1. kenshin
        @Rat's

        http://blog.g00gle.top/?p=295
        类似这种

        1. kenshin
          @kenshin

          展示站挂了

          1. Rat's
            @kenshin

            这种见过很多类似的,不过都没发。

  33. LALA

    这波操作可以的,马上搭一个起来玩玩。

    1. Rat's
      @LALA

      大佬多来点爬妹子的教程啊

      1. LALA
        @Rat's

        要不起,再搞几下肾没了

        1. Rat's
          @LALA

          没事,有2个怕啥

          1. 云天
            @Rat's

            你得考虑下我们啊
            上次200G的图还没看完呢

            1. Rat's
              @云天

              要不看下我的爬91和1024的教程?估计还得加几个T

  34. 缙哥哥

    太牛了,先收藏,抽空再学习!

  35. Cat's

    要记得在设置里.搜索语言选择中文
    不然搜出来的都是奇怪的东西.

    1. Rat's
      @Cat's

      这个我在最下面说明下。

      1. 龙狮
        @Rat's

        可以回复一下我的问题嘛?我两天之内看您博客。我搭建好之后提示这些,是我的问题,还是源码问题?如果楼主有解决问题,可以发一下我的QQ邮箱。谢谢。
        错误! 引擎无法获取结果。

        google (超时), wikipedia (超时)

        请稍后再试,或寻找其它的 searx 实例替代。

        1. 不知名
          @龙狮

          我用的国内的服务器,应该怎么解决问题呢,或者能否修改engine

        2. Yawee
          @龙狮

          你看看是不是端口没有开启,我也是超时,然后开了端口就好了

        3. Rat's
          @龙狮

          难道用的国内的服务器?

          1. 龙狮
            @Rat's

            下评论的演示站也用不了,我估计应该不是服务器的问题把,我先去试试看。谢谢你

  36. Cat's

    想我这么懒得家伙当然是直接用
    预览站https://searx.me/

    1. kenshin
      @Cat's

      预览站点代价缓存都不行,想知道效果