package mainimport ("fmt""net/http""errors")func main() {url:="https://www.baidu.com/link?url=IIZcBDQ9FSkK8wRluFkNAxjf4a7VDwHH0kFqGazjEAFGRDdnxe0HqQRdSocksxbbrpMjo7PTBeGjgnmf0aYOqN7ld6dXDBVO_jMYS16Yuy7CI5M_TMysMLpmFhF4CEjGjXOEYvjL_r9Hgz2-4jwsoa"client := &http.Client{CheckRedirect: myCheckRedirect,}req, err := http.NewRequest("GET", url, nil)if err != nil{}resp, err := client.Do(req)if err != nil{}fmt.Println(resp.Status)respUrl,err := resp.Location()if err != nil{}fmt.Println(respUrl.String())}func myCheckRedirect(req *http.Request, via []*http.Request) error {//自用,将url根据需求进行组合if len(via) >= 1 {retu
html代码中,Referrer设置不对,比如我的代码中,是这样的:
<meta name='referrer' content="never">
referrer 网站来路;访问者进入网站任何途径。HTTP Referer 是header的一部分,当浏览器向web服务器发出请求的时候,一般会带上Referer,告诉服务器用户从那个页面连接过来的,服务器藉此可以获得一些信息用语处理。
referrer 用来判断网站来源,可以相应的做一些校验,比如只允许某网站的请求,那么就可以通过获取referer,加以判断即可。
对于 referrer,有两篇文章可以参考:
使用 Referer Meta 标签控制 referer—详解 referrer-policy
HTTP首部---referrer 知识点
百度站长是有分析受访页面、来源网站、入口页面等等,都是需要Referrer的配置
而我的代码中,将 referrer 设置为了 never,与现在流行的“referrer policy”值“no-referrer”的效果一致
根据需要,设置 referrer 值为合适的值(参考上面相关文章)或者直接删除关于 referrer 的设置,使用默认值“no-referrer-when-downgrade”
by 刘迎光@狐刺科技
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn/
OpenBI问答社区:http://www.openbi.tk/
最近在做微服务相关产品,其中需要有API网关相关产品,虽然早有研究过API网关产品TYK,但是感觉其太重,想起之前研究开源BI产品saiku的时候,记得其有NodeJS的代理代码,于是看了下,颇有启发,略微修改了一些,拿出来跟大家分享下,虽然简单,不可用于生产,但是对于学习还是不错的
{"name": "SmartHttpProxy","description": "An simplest Http Proxy","version": "0.0.1","author": "liuyg@liuyingguang.cn","license": {"type": "Apache License Version 2"},"main": "server.js","scripts": {"start": "node server.js 8088 127.0.0.1 80 / "},"dependencies": {"express": "~4.13.4"}}
/*** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either e
错误信息:ERROR: { [Error: socket hang up] code: 'ECONNRESET' }
分析原因:由于某种原因,导致http目标地址建立socket连接的时候出错
错误解决:经过对比查找,发现我这里nodejs项目中有对中间件“body-parser”的使用,将其去除,则没有问题了
还有其他一些原因,这里暂时没有遇到,就不多做解释了,