本篇文章来教大家如何复活百度站内搜索,理论适用于所有百度已收录的网站
在2019年的时候,吴昊博客写过一个文章,独家完美解决百度站内搜索不支持https问题:https://blog.whsir.com/post-4289.html
当时的百度站内搜索已经是濒死边缘了,所以有了上面那篇文章,直到今日,百度站内搜索(http://zhannei.baidu.com)彻底打不开了
偶然发现百度站内搜索地址
最近偶然发现有个百度站内搜索的地址:http://zhannei.baidu.com/cse/site?q=&cc=blog.whsir.com,这个链接指定了吴昊博客,里面的内容全都是吴昊博客的内容。
进一步确认站内搜索是否有效
在刚刚打开的地址中,随便搜索一个吴昊博客中的内容,如esxi
啊哈,搜索出来的内容果然都是吴昊博客中的地址。
然后浏览器中的地址变成了:http://zhannei.baidu.com/cse/site?q=esxi&click=1&cc=blog.whsir.com&s=&nsid=
然后就可以得知,q后面接的是关键词内容,cc后面接的是网站地址,至于后面的小尾巴直接删掉。
知道了这个链接组合规则,接下来就容易多了。
开始改造吴昊博客搜索
在吴昊博客右边,有个站内搜索框
这里原来的代码是
1 2 3 |
<form id="cse-search-box" class="search-form" action="https://blog.whsir.com/?s=" target="_blank"> <input name="s" type="text" class="form-control" id="q" placeholder="搜索..." size="28" /> <input id="go" class="btn" type="submit" value="搜索" /></form> |
将其改造成新的代码,如下
1 2 3 4 5 |
<form id="cse-search-box" class="search-form" action="http://zhannei.baidu.com/cse/site" target="_blank"> <input name="q" type="text" class="form-control" id="q" placeholder="搜索..." size="28" /> <input type="hidden" name="cc" value="blog.whsir.com"> <input id="go" class="btn" type="submit" value="搜索" /> </form> |
这里将action属性的值,修改为http://zhannei.baidu.com/cse/site,并在其中添加了一个'q'参数用于关键词,此外,我还添加了一个'cc'参数用于指定搜索的站点为blog.whsir.com。
但是,问题来了,如果你当前的网站是https协议的,那么嵌入http的百度站内搜索就会提示,不安全,不能直接访问,所以二次代码改造来了。
二次代码改造后如下
1 2 3 4 5 |
<form id="cse-search-box" class="search-form" action="https://so.whsir.com/cse/site" target="_blank"> <input name="q" type="text" class="form-control" id="q" placeholder="搜索..." size="28" /> <input type="hidden" name="cc" value="blog.whsir.com"> <input id="go" class="btn" type="submit" value="搜索" /> </form> |
我这里将http://zhannei.baidu.com/cse/site修改为https://so.whsir.com/cse/site,这个so.whsir.com的域名通过nginx反向代理到了zhannei.baidu.com,这样我们的网站在跳转搜索时,就是安全的了。
附nginx反向代理配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 443 ssl http2; ssl_certificate ssl/so.whsir.com.pem; ssl_certificate_key ssl/so.whsir.com.key; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; server_name so.whsir.com ; location / { proxy_pass http://zhannei.baidu.com; } } server { listen 80; server_name so.whsir.com; return 301 https://so.whsir.com$request_uri; } |
原文链接:复活百度站内搜索,转载请注明来源!