色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

go語言中怎么使用HTTP代理

華益云HTTP爬蟲IP ? 來源:華益云HTTP爬蟲IP ? 作者:華益云HTTP爬蟲IP ? 2022-09-01 14:41 ? 次閱讀

go語言中怎么使用HTTP代理。

以下代碼主要圍繞第一次接觸HTTP代理IP的go新手來寫(步驟注釋清晰)。

直接把下面示例代碼中的HTTP代理API,替換成你后臺生成的代理API鏈接,就可以跑起來了。

以下是一個示例代碼,只是一個基礎的演示,具體的代碼還是要根據你業務的實際情況去寫的。

示例代碼中的HTTP代理IP,我使用的是華益云的HTTP代理API,注冊就能白嫖1萬個高匿爬蟲IP,有效期是一年,對于調試代碼來說這個時間是非常的友好。

示例代碼demo中同款HTTP代理API-點我免費領取10000個高匿IP

打開代理API,獲取里面的IP,使用IP訪問目標網站,其實代碼中就是執行這個過程而已,然后加了幾個錯誤判斷有助于代碼的穩定運行。(步驟注釋清晰)

package main

import (
	"errors"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"net/url"
	"strings"
	"time"
)

func main() {
	// 發送給服務器的標識
	userAgent := "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/532.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
	// 代理api(這里我推薦使用www.9vps.com華益云的HTTP代理API,注冊就送1萬IP)
	proxyUrl := "http://http.9vps.com/getip.asp?username=166xxxx6597&pwd=xxxxbaa59ce237dff65134984b9cxxxx&geshi=1&fenge=1&fengefu=&Contenttype=1&getnum=20&setcity=&operate=all&"
	outPutProxy, _ := getProxy(proxyUrl, userAgent)
	if len(outPutProxy) == 0 {
		// 沒有獲取到代理
		return
	}
	// 目標請求網站
	url := "https://www.qq.com/"
	var out string = ""
	for i := 0; i < 3; i++ {
		// 最多嘗試三次
		px := outPutProxy[0]
		outPutProxy = append(outPutProxy[:0], outPutProxy[1:]...)
		fmt.Println("using proxy ", px)
		response, err := requestGet(url, userAgent, "http://"+px)
		out = fmt.Sprintf("%s", response)
		if err == nil {
			// 這里說明請求成功了,直接可以退出循環了
			fmt.Println(out)
			break
		} else {
			if len(outPutProxy) == 0 {
				// 沒有代理了再次獲取下
				outPutProxy, err = getProxy(proxyUrl, userAgent)
				if err != nil {
					log.Fatalln(err)
				}
			}
		}
	}
	// 最終的響應內容
	fmt.Println(out)
}
func getProxy(proxyUrl string, userAgent string) ([]string, error) {
	var outPutProxy []string
	proxyIps, err := requestGet(proxyUrl, userAgent, "")
	fmt.Println(proxyIps)
	if err != nil {
		return outPutProxy, err
	}
	// {"code":3002,"data":[],"msg":"error!用戶名或密碼錯誤","success":false}
	if strings.Index(proxyIps, "{") > -1 {
		return outPutProxy, errors.New(proxyIps)
	}
	outPutProxy = strings.Split(proxyIps, "\r\n")
	fmt.Printf("總共獲取了%d個代理\n", len(outPutProxy))
	return outPutProxy, nil

}

func requestGet(reqUrl string, userAgent string, proxyAddr string) (string, error) {
	var client http.Client
	if proxyAddr != "" {
		// 有代理的情況
		proxy, err := url.Parse(proxyAddr)
		if err != nil {
			return "", err
		}
		client = http.Client{
			Timeout:   5 * time.Second, // 5秒最大超時
			Transport: &http.Transport{Proxy: http.ProxyURL(proxy)},
		}
	} else {
		client = http.Client{
			Timeout: 5 * time.Second, // 5秒最大超時
		}
	}
	// 創建新的Request對象
	req, err := http.NewRequest("GET", reqUrl, nil)
	if err != nil {
		return "", err
	}
	// 設置請求頭
	req.Header.Set("user-agent", userAgent)
	// 向服務器發送請求
	resp, err := client.Do(req)
	if err != nil {
		return "", err
	}
	// 讀取響應內容
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return "", err
	}
	// 將響應內容轉為string類型
	response := string(body)
	return response, nil
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HTTP
    +關注

    關注

    0

    文章

    513

    瀏覽量

    31821
  • 代碼
    +關注

    關注

    30

    文章

    4857

    瀏覽量

    69527
  • go語言
    +關注

    關注

    1

    文章

    158

    瀏覽量

    9145
收藏 人收藏

    評論

    相關推薦

    Go語言常量的聲明

    Go 語言中, 常量 表示的是固定的值,常量表達式的值在編譯期進行計算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的數據類型只可以是 布爾型 、 數字型 (整數型、浮點型和復數)
    發表于 07-20 15:24 ?473次閱讀

    Go語言中的整數類型

    Go 語言中,整型可以細分成兩個種類十個類型。
    發表于 07-20 15:25 ?1006次閱讀

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細講解。 枚舉,是一種重要的數據類型,由一組鍵值對組成,通常用來在編程
    的頭像 發表于 09-02 09:43 ?5296次閱讀

    詳細介紹go語言中的閉包的實現

    什么是閉包? 什么場景下會用閉包 ? 本文對 go 語言中的閉包做了詳細介紹。 閉包是由函數及其相關引用環境組合而成的實體(即:閉包=函數+引用環境)。 Go中的閉包 閉包是函數式語言中
    的頭像 發表于 10-20 16:18 ?1923次閱讀

    帶你了解go語言中的閉包

    ? 【 導讀】什么是閉包? 什么場景下會用閉包 ? 本文對 go 語言中的閉包做了詳細介紹。 閉包是由函數及其相關引用環境組合而成的實體(即:閉包=函數+引用環境)。 Go中的閉包 閉包是函數式
    的頭像 發表于 11-02 15:27 ?2540次閱讀

    go語言代碼中使用HTTP代理IP的方法

    如何在go語言代碼中使用HTTP代理IP。
    的頭像 發表于 08-04 16:13 ?3291次閱讀

    如何在易e語言代碼中使用HTTP代理IP

    如何在易e語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:29 ?7099次閱讀

    如何在c語言代碼中使用HTTP代理IP

    如何在c語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:31 ?2442次閱讀

    如何在c#語言代碼中使用HTTP代理IP

    如何在c#語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:33 ?2764次閱讀

    python中怎么使用HTTP代理

    python中怎么使用HTTP代理,華益云高匿爬蟲代理ip
    的頭像 發表于 09-01 14:36 ?1714次閱讀

    PHP中怎么使用HTTP代理

    PHP中怎么使用HTTP代理,華益云高匿爬蟲代理ip
    的頭像 發表于 09-01 14:38 ?1821次閱讀

    e易語言中怎么使用HTTP代理

    e易語言中怎么使用HTTP代理。
    的頭像 發表于 09-01 14:42 ?3965次閱讀

    c語言中怎么使用HTTP代理

    如何再c語言代碼中使用HTTP代理IP。
    的頭像 發表于 09-01 14:44 ?1496次閱讀

    c#語言中怎么使用HTTP代理

    c#語言中怎么使用HTTP代理
    的頭像 發表于 09-01 14:46 ?2234次閱讀

    Go語言中的包

    每個 Go 文件都屬于且僅屬于一個包,一個包可以由許多以 .go 為擴展名的源文件組成,因此文件名和包名一般來說都是不相同的。
    的頭像 發表于 04-17 09:22 ?1684次閱讀
    主站蜘蛛池模板: 国产精品久久久久影院色老大 | 日美一级毛片 | 麻豆国产99在线中文 | 最近日本MV字幕免费观看视频 | 日韩一区二区天海翼 | 早乙女由依在线观看 | 亚洲精品国产在线网站 | 十分钟免费视频大全在线 | 日本无吗高清 | 青青草在线 视频 | 欧美亚洲国内日韩自拍视频 | 国产精品国产三级国AV在线观看 | 边吃胸边膜下床震免费版视频 | 亚洲综合日韩中文字幕v在线 | www红色一片 | 午夜DV内射一区二区 | xxxx免费观看| 国产精品视频第一区二区三区 | 国精产品一区二区三区四区糖心 | 九九热在线观看 | 宝贝好紧好爽再搔一点试視頻 | 妙玉被肉干高H潮文 | 亚洲一区在线播放 | 国产系列在线亚洲视频 | 中文字AV字幕在线观看 | xvideos中文版在线视频 | 国产精品视频一区二区猎奇 | 亚洲精品视频免费 | 青柠视频在线观看高清HD | 99久久精品国产国产毛片 | 国产免费阿v精品视频网址 国产免费69成人精品视频 | 亚洲欧美中文字幕网站大全 | 国产1000部成人免费视频 | 苍井空a 集在线观看网站 | qovd伦理| 国产婷婷午夜精品无码A片 国产婷婷色综合AV蜜臀AV | 果冻传媒在线播放 免费观看 | 国产色欲一区二区精品久久呦 | 学校女性奴sm训练调教 | 99精品观看 | 双性精跪趴灌满h室友4p |