设为首页 收藏本站
查看: 1276|回复: 0

[经验分享] python从淘宝ip库中获取公网ip的信息

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-8 14:24:55 | 显示全部楼层 |阅读模式
看到一个题目:  从ip.taobao.com中获取公网ip的信息
分析:
1、生成公网IP地址;
2、根据ip.taobao.com返回的代码,用json解析 下面是淘宝的接口说明



'''

接口说明                       


                                        1. 请求接口(GET):                               

                                http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]                               

                                        2. 响应信息:                               

                                        (json格式的)国家 、省(自治区或直辖市)、市(县)、运营商                               

                                        3. 返回数据格式:                               

{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含义为,0:成功,1:失败。                               



'''
======================
下面是我的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#-*- coding:utf-8 -*-
#! /usr/bin/env python
import urllib,json,time

######################
#  create ip address
######################

def create_ip(beginip ,endip ,iptype):
    file = open(iptype+'_ipinfo.txt', 'w')
    begin = beginip.split('.')
    X1 = int(begin[0])
    X2 = int(begin[1])
    X3 = int(begin[2])
    X4 = int(begin[3])

    end = endip.split('.')
    Y1 = int(end[0])
    Y2 = int(end[1])
    Y3 = int(end[2])
    Y4 = int(end[3])

    for X1 in range(X1, Y1):
        for X2 in range(X2, Y2):
            for X3 in range(X3, Y3):
                for X4 in range(X4, Y4):
                    ip = "%d.%d.%d.%d" % (X1,X2,X3,X4)        #计算全球的公网IP地址

################################################################################
# get the info of the ip  from ip.taobao.com
# whith url http://ip.taobao.com/service/getIpInfo.php?ip=X.X.X.X
################################################################################

                    url = 'http://ip.taobao.com/service/getIpInfo.php?ip='+ip
                    page = urllib.urlopen(url)
                    time.sleep(0.2)             #等待返回数据
                    alldata = page.read()
                    data = json.loads(alldata)
                    result = data['code']
                    info = data['data']
  
                    info_ip = info['ip']+','+info['area']+','+info['area_id']+','+info['city']
+','+info['city_id']+','+info['country']+','+info['country_id']+','+info['isp']+','+info['isp_
id']+','+info['region']+','+info['region_id']

                    info = info_ip.encode("utf-8")    #将字符编码类型转化为utf-8
                     
                    time.sleep(0.2)            #由于taobao有查询限制,要小于10qps,这
里设置为5qps

                    if 'beginip' == 'endip':
                        file.write(info)
                        file.close()
                    elif X4 == 255 :
                        continue
                    elif X4 == 0 :
                        continue
                    elif X1 > Y1:
                        print "please input right ip range"
                        file.close()
                        break
                    elif X1 <= Y1:
                        print info
                        if result == 0 :
                            file.write(info + '\n')
                        else :        
                            continue
                    else:
                        file.close()
                        return
                X4 = 0
            X3 = 0
        X2 = 0
    X1 =0

#create the A B C net type ip
create_ip('1.0.0.1','9.255.255.254','A1')
create_ip('11.0.0.1','126.255.255.254','A2')
create_ip('128.0.0.1','169.253.255.254','B1')
create_ip('169.255.0.1','172.15.255.254','B2')
create_ip('172.32.0.1','191.255.255.254','B3')
create_ip('192.0.0.1','192.167.255.254','C1')
create_ip('192.169.0.0','223.255.255.254','C2')




但是运行中会报错,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1.0.0.1,,,,,澳大利亚,AU,,,,
1.0.0.2,,,,,澳大利亚,AU,,,,
1.0.0.3,,,,,澳大利亚,AU,,,,
1.0.0.4,,,,,澳大利亚,AU,,,,
1.0.0.5,,,,,澳大利亚,AU,,,,
1.0.0.6,,,,,澳大利亚,AU,,,,
1.0.0.7,,,,,澳大利亚,AU,,,,
1.0.0.8,,,,,澳大利亚,AU,,,,
1.0.0.9,,,,,澳大利亚,AU,,,,
1.0.0.10,,,,,澳大利亚,AU,,,,
1.0.0.11,,,,,澳大利亚,AU,,,,
1.0.0.12,,,,,澳大利亚,AU,,,,
1.0.0.13,,,,,澳大利亚,AU,,,,
1.0.0.14,,,,,澳大利亚,AU,,,,
1.0.0.15,,,,,澳大利亚,AU,,,,
1.0.0.16,,,,,澳大利亚,AU,,,,
1.0.0.17,,,,,澳大利亚,AU,,,,
1.0.0.18,,,,,澳大利亚,AU,,,,
Traceback (most recent call last):
  File "createipandgetinfov5.py", line 77, in <module>
    create_ip('1.0.0.1','9.255.255.254','A1')
  File "createipandgetinfov5.py", line 40, in create_ip
    data = json.loads(alldata)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded



想了很多方法不知道是什么问题,希望大牛们帮忙分析分析!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25653-1-1.html 上篇帖子: python中的import 下篇帖子: python文件全局替换 python 淘宝 信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表