批量獲取手機號歸屬地

package main

import (
    "bufio"
    "crypto/tls"
    "encoding/json"
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "net/http"
    "os"
    "path/filepath"
    "strings"
    "time"
)

type RespData struct {
    Mobile string
    Msg    string
    Meta   struct {
        Result string `json:result`
    } `json:meta`
    Data struct {
        Area     string `json:area`
        Operator string `json:operator`
    } `json:data`
}

var (
    client *http.Client
)

func init() {
    tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true}} //忽略https的證書檢查
    client = &http.Client{Transport: tr}
}

func main() {
    log.Println("請輸入含有手機號的文本文件路徑(最終結(jié)果也將放在此目錄中)!當手機號較多時將會消耗較多系統(tǒng)資源")
    stdInput := bufio.NewReader(os.Stdin)
    filePath, _ := stdInput.ReadString('\n')
    filePath = strings.ReplaceAll(filePath, "\n", "")
    filePath = strings.ReplaceAll(filePath, "\r", "")
    filePath = strings.Trim(filePath, " ")
    if filePath == "" {
        log.Fatal("您未輸入文件路徑!告辭")
    }
    mobiles := ReadMobilesFromFile(filePath)
    mobileAreaChan := make(chan *RespData, len(mobiles))
    for _, mobile := range mobiles {
        go MobileAreaInfo(mobileAreaChan, mobile)
    }
    fileDir := filepath.Dir(filePath)
    currentTime := time.Now()
    mobileAreaFile := filepath.Join(fileDir, currentTime.Format("2006-01-02"))
    os.Remove(mobileAreaFile)
    fileObj, err := os.Create(mobileAreaFile)
    if err != nil {
        log.Fatal(err)
    }
    defer fileObj.Close()
    writer := bufio.NewWriter(fileObj)
    for i := 0; i < len(mobiles); i++ {
        data := <-mobileAreaChan
        line := fmt.Sprintf("手機號=%s 歸屬地=%s 運營商=%s 錯誤信息=%s\n", data.Mobile, data.Data.Area, data.Data.Operator, data.Msg)
        fmt.Println(line)
        writer.WriteString(line)
    }
    writer.Flush()
}

//從文件中讀取手機號
func ReadMobilesFromFile(fileName string) []string {
    file, openErr := os.Open(fileName)
    if openErr != nil {
        log.Fatal(openErr)
    }
    defer file.Close()
    ret := []string{}
    rd := bufio.NewReader(file)
    for {
        line, readErr := rd.ReadString('\n')
        if readErr != nil && readErr == io.EOF {
            break
        } else if readErr != nil {
            log.Fatal(readErr)
        }
        line = strings.Replace(line, "\n", "", -1)
        line = strings.Replace(line, "\r", "", -1)
        ret = append(ret, line)
    }
    return ret
}

//手機號歸屬地信息
func MobileAreaInfo(areaChan chan *RespData, mobile string) {
    var respData *RespData = new(RespData)
    respData.Mobile = mobile
    req, err := http.NewRequest("GET", fmt.Sprintf("https://www.baifubao.com/callback?cmd=1059&phone=%s", mobile), nil)
    if err != nil {
        respData.Msg = err.Error()
        areaChan <- respData
        return
    }
    resp, err := client.Do(req)

    if err != nil {
        respData.Msg = err.Error()
        areaChan <- respData
        return
    }
    defer resp.Body.Close()
    if resp.StatusCode != http.StatusOK {
        respData.Msg = fmt.Sprintf("響應(yīng)狀態(tài)碼%d錯誤", resp.StatusCode)
        areaChan <- respData
        return
    }

    bodyData, _ := ioutil.ReadAll(resp.Body)
    bodyStr := string(bodyData)
    bodyStr = strings.Replace(bodyStr, "/*fgg_again*/(", "", -1)
    bodyStr = strings.TrimSuffix(bodyStr, ")")
    json.Unmarshal([]byte(bodyStr), respData)
    areaChan <- respData
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 遇到一個需求, 需要發(fā)送短信給全球各地的用戶, 但是各大運營商的API都是 區(qū)分 國內(nèi) 和 國際, 但是我們只有電...
    毛宇鵬閱讀 2,014評論 0 0
  • java獲取手機號歸屬地 一般想獲取手機號歸屬地等信息個人是無法獲取的,但是可以通過調(diào)用第三方接口獲取,具體百度搜...
    AA織夢yz閱讀 685評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,834評論 28 54
  • 人工智能是什么?什么是人工智能?人工智能是未來發(fā)展的必然趨勢嗎?以后人工智能技術(shù)真的能達到電影里機器人的智能水平嗎...
    ZLLZ閱讀 4,098評論 0 5
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時間,看過一些關(guān)于股票投資的書籍,對于巴菲特等股神的...
    瞎投資閱讀 5,938評論 3 8

友情鏈接更多精彩內(nèi)容