nonebot2/commands/networktools.py
2016-12-30 22:01:50 +08:00

61 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import requests
from lxml import etree
from command import CommandRegistry
from commands import core
__registry__ = cr = CommandRegistry()
@cr.register('ip')
def ip(args_text, ctx_msg):
query = args_text.strip()
if not query:
core.echo('请指定要查询的 IP 或域名', ctx_msg)
return
core.echo('正在查询,请稍等……', ctx_msg)
chinaz_url = 'http://ip.chinaz.com/%s'
ipcn_url = 'http://ip.cn/?ip=%s'
ipipnet_url = 'http://freeapi.ipip.net/%s'
found = False
# Get data from ChinaZ.com
resp = requests.get(chinaz_url % query)
if resp.status_code == 200:
html = etree.HTML(resp.text)
p_elems = html.xpath('//*[@id="leftinfo"]/div[3]/div[2]/p')
if len(p_elems) > 1:
p_elems = p_elems[1:]
reply = 'ChinaZ:'
for p_elem in p_elems:
span_elems = p_elem.getchildren()
reply += '\n' + span_elems[1].text.replace('.', '_') + ', ' + span_elems[3].text
core.echo(reply, ctx_msg)
found = True
# Get data from ip.cn
resp = requests.get(ipcn_url % query, headers={'User-Agent': 'curl/7.47.0'})
if resp.status_code == 200:
# Example: 'IP123.125.114.144 来自:北京市 联通'
items = resp.text.strip().split('')
if len(items) == 3:
reply = 'IP_CN:\n' + items[1].split(' ')[0].replace('.', '_') + ', ' + items[2]
core.echo(reply, ctx_msg)
found = True
# Get data from ipip.net
resp = requests.get(ipipnet_url % query, headers={'User-Agent': 'curl/7.47.0'})
if resp.status_code == 200 and resp.text.strip():
# Example: '["中国","江苏","常州","","教育网"]'
parts = json.loads(resp.text)
reply = 'IPIP_NET\n' + query.replace('.', '_') + ' ' + ''.join(parts)
core.echo(reply, ctx_msg)
found = True
core.echo('以上' if found else '查询失败', ctx_msg)