Tag - golang

go golang 重定向 http 刘迎光 狐刺科技    2019-05-15 09:45:23    311

原因

  1. 爬虫获取百度查询结果的时候,为了获取网页真实地址,而百度跳转页面的其中一种方式就是302重定向(redirect),那么针对这种方式,go语言默认自动执行redirect的,所以没办法使用get请求获取真实地址
  2. 对于第一条描述的,在302重定向的时候,真实地址在response的location中
  3. go语言中,默认是支持10层redirect,所以,除非跳出,否则会redirect 到第10层才退出,然而也是可以自定义的

自定义redirect规则示例

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "errors"
  6. )
  7. func main() {
  8. url:="https://www.baidu.com/link?url=IIZcBDQ9FSkK8wRluFkNAxjf4a7VDwHH0kFqGazjEAFGRDdnxe0HqQRdSocksxbbrpMjo7PTBeGjgnmf0aYOqN7ld6dXDBVO_jMYS16Yuy7CI5M_TMysMLpmFhF4CEjGjXOEYvjL_r9Hgz2-4jwsoa"
  9. client := &http.Client{
  10. CheckRedirect: myCheckRedirect,
  11. }
  12. req, err := http.NewRequest("GET", url, nil)
  13. if err != nil{
  14. }
  15. resp, err := client.Do(req)
  16. if err != nil{
  17. }
  18. fmt.Println(resp.Status)
  19. respUrl,err := resp.Location()
  20. if err != nil{
  21. }
  22. fmt.Println(respUrl.String())
  23. }
  24. func myCheckRedirect(req *http.Request, via []*http.Request) error {
  25. //自用,将url根据需求进行组合
  26. if len(via) >= 1 {
  27. retu
golang    2017-07-19 20:56:40    824
错误信息:

imports golang.org/x/tools/go/vcs: unrecognized import path "golang.org/x/tools/go/vcs"


原因:
   国内无法访问到golang.org/x/tools/go/vcs这个地址


解决办法:
    我使用翻墙工具在本机建立了代理,在centos端修改代理配置,执行如下命令   
export http_proxy=http://172.17.42.1:8118 
export https_proxy=$http_proxy 
export ftp_proxy=$http_proxy 
export rsync_proxy=$http_proxy 
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" 
source /etc/profile

    网上还有其他解决办法,但是我试验失败了:
    
 


    参考地址:https://github.com/tools/godep/issues/154


 

by 刘迎光@萤火虫工作室 
OpenBI交流群:495266201 
MicroService 微服务交流群:217722918 
mail: liuyg#liuyingguang.cn 
博主首页(==防止爬虫==):http://blog.liuyingguang.cn