HiveNetCore.utils.net_tool module

网络处理相关工具

class HiveNetCore.utils.net_tool.NetTool[源代码]

基类:object

网络处理相关工具

提供网络处理相关的函数, 包括字节转换处理等

static bytes_to_int(bytes_value, byte_order='big', signed=True)[源代码]

将字节数组转换为整型数字, 与int_to_bytes配套使用

参数
  • bytes_value (bytes) – 要转换的字节数组

  • byte_order (string) –

    default=”big”, 字节顺序, 值为’big’或者’little’:

    big - 表示最有意义的字节放在字节数组的开头

    little - 表示最有意义的字节放在字节数组的结尾

    sys.byteorder - 保存了主机系统的字节序, 可以使用这个属性获取本机顺序

  • signed (bool) – default=True, 确定是否使用补码来表示整数, 如果值为False, 并且是负数, 则产生OverflowError

返回

转换后的整数

返回类型

int

引发

OverflowError – 无符号位时传入负数抛出该异常

static download_http_file(url: str, filename=None, path='', is_resume=False, headers={}, connect_timeout=None, params={}, proxies={}, verify=True, cookies={}, block_size=1024, retry=0, show_rate=False)[源代码]

下载文件

参数
  • url (str) – 要下载的文件url

  • filename (str) – default=None, 保存的文件名, 如果传None代表使用url的文件名

  • path (str) – default=’’, 要保存的文件路径

  • is_resume (bool) – default=False, 是否使用续传功能, 如果不使用则统一用wget下载

  • headers (dict) – default={}, 要带上的http协议头

  • connect_timeout (float) – default=None, 连接超时时间, 单位为秒

  • params (dict) – default={}, 请求url的参数, 拼接到url中, 例如”https://www.baidu.com/s?wd=Python

  • proxies (dict) –

    default={}, 代理服务器, 例如:

    proxies={

    “http”:”http://1.192.242.107:9999

    # “https”:”https://192.168.0.1:80

    }

  • verify (bool) – default=True, ssl证书验证是否跳过, 可设置为False跳过

  • cookies (dict) – default={}, cookies参数

  • block_size (int) – default=1024, 每次下载块大小, 单位为byte

  • retry (int) – default=0, 自动重试次数

  • show_rate (bool) – default=False, 显示下载进度(仅wget模式支持)

classmethod get_file_md5(file, buffer_size: int = 4096)[源代码]

获取文件md5值

参数

file (str|FileIO|bytes]) – 文件路径, 或已打开的文件对象, 或文件字节数组

classmethod get_full_url(url: str, ref_url: str) str[源代码]

获取完整的url地址

参数
  • url (str) – 要处理的url地址

  • ref_url (str) – 引用的url地址( 页面url)

返回

完整url地址

返回类型

str

static get_http_fileinfo(url: str, headers={}, connect_timeout=None, params={}, proxies={}, verify=True, cookies={})[源代码]

获取网络文件基本信息

参数
  • url (str) – 下载文件的url

  • headers (dict) – default={}, 下载请求要自定义的http头

  • connect_timeout (float) – default=None, 连接服务器的超时时间, 单位为秒

  • params (dict) – default={}, 请求url的参数, 拼接到url中, 例如”https://www.baidu.com/s?wd=Python

  • proxies (dict) –

    default={}, 代理服务器, 例如:

    proxies={

    “http”:”http://1.192.242.107:9999

    # “https”:”https://192.168.0.1:80

    }

  • verify (bool) – default=True, ssl证书验证是否跳过, 可设置为False跳过

  • cookies (dict) – default={}, cookies参数

static get_net_gateways()[源代码]

返回本机的网关信息清单

static get_net_interface_info(nic_name)[源代码]

获取指定网卡的地址信息

参数

nic_name (string) – 网卡名(NIC NAME)

classmethod get_net_interface_info_alias(nic_name: str) dict[源代码]

获取网卡信息(按容易理解的别名解析)

参数

nic_name (str) – 网卡名

返回

网卡信息

{

‘nic_name’: ‘网卡名’,

’mac’ : ‘MAC地址’,

’ipv4’ : { # ipv4信息

{‘addr’: ‘IP地址’, ‘netmask’: ‘网络掩码’, ‘broadcast’: ‘广播地址’}

},

’ipv6’: { # ipv6信息

{‘addr’: ‘ipv6地址’, ‘netmask’: ‘网络掩码’, ‘flags’: 1024}

}

}

返回类型

dict

static get_net_interfaces()[源代码]

获取本机网卡清单

static get_web_page_code(url: str, data=None, timeout=<object object>, encoding='utf-8', retry=0, proxy: dict = None, cafile=None, capath=None, cadefault=False, context=None, real_url=[''])[源代码]

获取网页代码(静态代码)

参数
  • url (str|urllib.request.Request) – 要获取的网页的url, 可用是一个字符串地址或者Request对象

  • data (bytes) –

    default=None, Post提交的数据, 正常以GET参数获取, data传值后将以POST参数获取

    示例(将data转换为字节, urlencode可用支持数组或列表的对象):

    data = urllib.parse.urlencode(data).encode(‘utf-8’)

  • timeout (float) –

    default=socket._GLOBAL_DEFAULT_TIMEOUT, 超时时间, 单位为秒

    默认使用socket的默认超时时间, 如果没有使用socket.setdefaulttimeout设置, 则是不超时

  • encoding (str) – default=’utf-8’, 解析返回页面内容的编码

  • retry (int) – default=0, 超时重试次数

  • proxy (dict) –

    default=None, 设置访问代理, 例如{‘http’: ‘http://61.135.217.7:80’}, 或 {‘https’: ‘https://61.135.217.7:443’}

    注: 指定代理模式不支持cafile、capath、cadefault、context等参数

  • cafile (str) – default=None, 本地CA证书文件

  • capath (str) – default=None, 本地CA证书所在路径

  • cadefault (bool) – default=False, ?

  • context (ssl.SSLContext) – default=None, SSL证书验证上下文

  • real_url (list) – default=[‘’], 通过该入参返回真实的url地址(数组第0个)

示例

url使用的Request对象的生成示例:

# 访问地址

url = ‘xxx’

# 报文头信息

headers ={

“User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36”,

}

# 生成Request对象

urllib.request.Request(url, headers=headers) 忽略网站的未经核实的证书认证错误

# 将以下生成的context对象传入执行参数

import ssl

context = ssl._create_unverified_context()

static int_to_bytes(int_value, fix_len=4, byte_order='big', signed=True)[源代码]

将整型数据转换为字节数组,与bytes_to_int配套使用

参数
  • int_value (int) – 要转换的数字

  • fix_len (int) – default=4, 返回数组的长度, 如果整数转换出的字节数组长度超过了该长度, 则产生OverflowError

  • byte_order (string) –

    default=”big”, 字节顺序, 值为’big’或者’little’:

    big - 表示最有意义的字节放在字节数组的开头

    little - 表示最有意义的字节放在字节数组的结尾

    sys.byteorder - 保存了主机系统的字节序, 可以使用这个属性获取本机顺序

  • signed (bool) – default=True, 确定是否使用补码来表示整数, 如果值为False, 并且是负数, 则产生OverflowError

返回

转换后的字节数组

返回类型

bytes

引发

OverflowError – 如果整数转换出的字节数组长度超过长度或无符号位时传入负数

static restful_api_call(url: str, method: str = 'get', back_type: str = 'json', encoding: str = None, block_size: int = 1024, save_file: str = None, raise_exception: bool = False, success_code: list = [200], logger=None, log_level: int = 10, **kwargs)[源代码]

调用Restful Api

参数
  • url (str) – 要调用的url地址

  • method (str) – default=’get’, Http方法

  • back_type (str) –

    default=’json’, 返回信息的类型

    json - json对象(字典或列表)

    text - 文本

    file - 存入指定文件

    bytes - 字节数组

  • encoding (str) – default=None, 编码, 如果不传则使用返回http头的字符集

  • block_size (int) – default=1024, 如果指定stream时, 每次获取的数据块大小

  • save_file (str) – default=None, back_type为file时指定要存储的文件

  • raise_exception (bool) – default=False, 当出现异常时是否抛出异常

  • success_code (list) – default=[200], 识别返回的status_code为成功的清单

  • logger (Logger) – default=None, 日志对象

  • log_level (int) – default=logging.DEBUG, 日志级别

  • 扩展参数 (-) –

  • 参考requests.request的参数 (: kwargs) –

  • 主要参数如下

返回

返回请求结果字典

{

‘is_success’: bool_是否成功,

’status_code’: int_响应状态码,

’headers’: dict_响应http头,

’back_object’: object_返回对象, 对应调用参数可以为dict、str、bytes、文件名,

’exception’: 如果出现异常, 异常对象,

’encoding’: 字符集

}

返回类型

dict