日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分析攻击IP来源地并画出饼图

發布時間:2024/1/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分析攻击IP来源地并画出饼图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文可能為博主原創文章,若標明出處可隨便轉載。 https://blog.csdn.net/Jailman/article/details/80508954

此文中的API將臺灣列為國家,非本人立場,臺灣屬于中國,臺灣島生活的人不一定!
上碼:

#!/usr/bin/python #coding=utf-8''' http://ip-api.com/json/ip '''import plotly import plotly.plotly import plotly.graph_objs as abcc import plotly.plotly class Piecharts: def __init__(self): print "餅圖生成中" def makePiecharts(self,labels,values,filename): trace = abcc.Pie(labels = labels,values= values) plotly.offline.plot([trace],filename=filename) import requests import systry:iplist = sys.argv[1] except:print "IP list not given or some other error!" countrylist = {} regionlist = {} citylist = {}with open(iplist) as f:for ip in f.readlines():if ip.strip() != '':url = 'http://ip-api.com/json/' + ip.strip()try:result = requests.get(url)jsontext = result.json()except:print "Error: Data not retrieved!"continuestatus = jsontext['status']if status == 'fail':print "%s failed!" % ip.strip()continuemline = jsontext['as']city = jsontext['city']country = jsontext['country']countryCode = jsontext['countryCode']isp = jsontext['isp']lat = jsontext['lat']lon = jsontext['lon']org = jsontext['org']query = jsontext['query']region = jsontext['region']regionName = jsontext['regionName']timezone = jsontext['timezone']zipcode = jsontext['zip']if not country in countrylist:countrylist[country] = 0else:countrylist[country] += 1if not regionName in regionlist:regionlist[regionName] = 0else:regionlist[regionName] += 1if not city in citylist:citylist[city] = 0else:citylist[city] += 1try:print ip.strip() + '--' + country + '--' + regionNameexcept:print "Special character!"print countrylist#countrylabels = [i for i in countrylist] value = [countrylist[i] for i in countrylist] drive = Piecharts() drive.makePiecharts(labels,value,"country.html") #regionlabels = [i for i in regionlist] value = [regionlist[i] for i in regionlist] drive = Piecharts() drive.makePiecharts(labels,value,"region.html") #citylabels = [i for i in citylist] value = [citylist[i] for i in citylist] drive = Piecharts() drive.makePiecharts(labels,value,"city.html")

gevent協程并發版

#!/usr/bin/python # coding=utf-8''' http://ip-api.com/json/ip '''import plotly import plotly.graph_objs as abcc import plotly.plotlyclass Piecharts:def __init__(self):print u'餅圖生成中'def makePiecharts(self, labels, values, filename):trace = abcc.Pie(labels=labels, values=values)plotly.offline.plot([trace], filename=filename)import requests import systry:iplist = sys.argv[1] except:print "IP list not given or some other error!" countrylist = {} regionlist = {} citylist = {}def locater(url):try:result = requests.get(url)jsontext = result.json()except:print "Error: Data not retrieved!"returnstatus = jsontext['status']if status == 'fail':print "%s failed!" % ip.strip()returnmline = jsontext['as']city = jsontext['city']country = jsontext['country']countryCode = jsontext['countryCode']isp = jsontext['isp']lat = jsontext['lat']lon = jsontext['lon']org = jsontext['org']query = jsontext['query']region = jsontext['region']regionName = jsontext['regionName']timezone = jsontext['timezone']zipcode = jsontext['zip']if not country in countrylist:countrylist[country] = 0else:countrylist[country] += 1if not regionName in regionlist:regionlist[regionName] = 0else:regionlist[regionName] += 1if not city in citylist:citylist[city] = 0else:citylist[city] += 1try:print ip.strip() + '--' + country + '--' + regionNameexcept:print "Special character!"from gevent import monkey monkey.patch_socket() from gevent import pool import geventpool = pool.Pool(40) glist = [] with open(iplist) as f:for ip in f.readlines():if ip.strip() != '':url = 'http://ip-api.com/json/' + ip.strip()glist.append(pool.spawn(locater, url))gevent.joinall(glist)# countrylabels = [i for i in countrylist]value = [countrylist[i] for i in countrylist]drive = Piecharts()drive.makePiecharts(labels, value, "country.html")# regionlabels = [i for i in regionlist]value = [regionlist[i] for i in regionlist]drive = Piecharts()drive.makePiecharts(labels, value, "region.html")# citylabels = [i for i in citylist]value = [citylist[i] for i in citylist]drive = Piecharts()drive.makePiecharts(labels, value, "city.html")

餅圖效果:

總結

以上是生活随笔為你收集整理的分析攻击IP来源地并画出饼图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。