Golang獲取本地IP地址方法,目前了解兩種,記錄如下:
創(chuàng)新互聯(lián)主營嘉蔭網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App制作,嘉蔭h5微信平臺小程序開發(fā)搭建,嘉蔭網(wǎng)站營銷推廣歡迎嘉蔭等地區(qū)企業(yè)咨詢
方法1:
爬蟲時,為了避免自己的IP被封,有時候需要設置反向代理,用其他的IP去爬。那么這里說的IP到底是電腦的什么IP呢?
首先看下 localhost 、 127.0.0.1 、 192.168.x.x 。
這里使用flask開啟一個服務,這樣本機可以通過 localhost 、 127.0.0.1 、 192.168.x.x (我的是 192.168.1.4 )等地址的5000端口(eg. 192.168.1.4:5000 )訪問服務器,而同一局域網(wǎng)的其它設備也可以通過 192.168.1.4:5000 訪問我的服務器
這里的 localhost 一般默認指向 127.0.0.1 ,所以只需要看IP
127.0.0.1 是只能自己對自己使用的IP
192.168.x.x 則是局域網(wǎng)下任何設備都可以訪問其他設備使用的IP(包括自己對自己)
然后,如果我訪問在線網(wǎng)站,或者爬蟲,使用的IP并不是上面那兩個IP,而是我的運營商分配給我的外網(wǎng)IP(public ip),作為我使用的這個網(wǎng)絡的一個身份標識,一般反爬蟲封的IP,也就是這個IP了
python版本:
nodejs版本:
參考鏈接:
package main
import (
"fmt"
"net"
"os"
)
func main() {
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, address := range addrs {
// 檢查ip地址判斷是否回環(huán)地址
if ipnet, ok := address.(*net.IPNet); ok !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
fmt.Println(ipnet.IP.String())
}
}
}
}