package main
import (
"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”的使用,将其去除,则没有问题了
还有其他一些原因,这里暂时没有遇到,就不多做解释了,