获取本机公网ip(public ip)

爬虫时,为了避免自己的IP被封,有时候需要设置反向代理,用其他的IP去爬。那么这里说的IP到底是电脑的什么IP呢?

首先看下localhost127.0.0.1192.168.x.x
这里使用flask开启一个服务,这样本机可以通过localhost127.0.0.1192.168.x.x(我的是192.168.1.4)等地址的5000端口(eg. 192.168.1.4:5000)访问服务器,而同一局域网的其它设备也可以通过192.168.1.4:5000访问我的服务器

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World'

if __name__ == '__main__':
    app.run(
        host='0.0.0.0',  # 接受任意 ip 地址的连接
        port=5000
    )

这里的localhost一般默认指向127.0.0.1,所以只需要看IP
127.0.0.1是只能自己对自己使用的IP
192.168.x.x则是局域网下任何设备都可以访问其他设备使用的IP(包括自己对自己)

然后,如果我访问在线网站,或者爬虫,使用的IP并不是上面那两个IP,而是我的运营商分配给我的外网IP(public ip),作为我使用的这个网络的一个身份标识,一般反爬虫封的IP,也就是这个IP了

那么如何获取呢?

  1. 对于不懂网络的人,可以直接在百度输入ip,就可以知道了
    image.png
  2. 使用python(不限语言)向提供IP查询的地址执行请求,然后从返回的数据中提取出IP

python版本:

from urllib import request
import re

# 通过sohu公共ip库获取本机公网ip
def get():
    sohu_ip_url = 'http://txt.go.sohu.com/ip/soip'
    r = request.urlopen(sohu_ip_url)
    text = r.read().decode()
    result = re.findall(r'\d+.\d+.\d+.\d+', text)
    if result:
        return result[0]
    else:
        return None

nodejs版本:

const http = require('http')

function getIP(cb) {
    const url = 'http://txt.go.sohu.com/ip/soip'
    http.get(url, res => {
        let data = ''
        res.on('data', chunk => data += chunk)
        res.on('end', () => {
            let m = data.match(/\d+\.\d+\.\d+\.\d+/g)
            if (m.length > 0) {
                cb(m[0])
            }
        })
    }).on('error', e => console.log(`error messsage: ${e.message}`))
}
  1. 使用语言对应的模块或者插件(github一堆)

参考链接:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 一、项目目标 搭建一个高可用web集群网站 二、项目规划 2.1 ip地址规划 2.2 拓扑图 2.3 相关说明 ...
    夏日之光阅读 4,293评论 0 1
  • 一、环境搭建 软件版本: Linux:centos7 64bit JDK:1.8.0 elasticsearch:...
    lailai900201阅读 3,695评论 0 12
  • 本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lso...
    老夫刘某阅读 3,823评论 0 7
  • 儿子刚才过来,抱着我说:妈妈,我做噩梦了。我感觉儿子脸上有泪。我拍着儿子的背。说,不怕儿子。有妈妈。爸爸妈妈爱你,...
    富足喜悦的二小姐阅读 386评论 0 4

友情链接更多精彩内容