今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 显然,你的第一映象是 IP 地址和端口号。 没错,就是 IP 地址和端口号。...而 Socket 编程中并不能直接使用域名,而是采用 IP + 端口号这种形式进行寻址的。 假设你现在需要编写一个网络请求库,有可能是 HTTP 协议的,也有可能是 WebSocket 协议的。...你要解决的第一个问题就是解析 URL,将网址转换成 IP + 端口号,甚至还需要分割出协议类型、资源路径以及是否采用更安全的传输方式等。...拿到 hostname 后,调用 socket 库的 getbyhostname 方法就能够得到目标服务器的 IP 地址了。...「你好骚啊.gif」 完整代码可在我的 Github 仓库查看:https://github.com/asyncins/CFA/tree/master/FightingCoder
目录 1、使用专用网址 2、使用自带socket库 3、使用第三方netifaces库 1、使用专用网站 获取的是公网IP。...import socket # 函数 gethostname() 返回当前正在执行 Python 的系统主机名 res = socket.gethostbyname(socket.gethostname...如果计算机设备有连接到 Internet 的路由,可以使用: import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect...(("8.8.8.8", 80)) print(s.getsockname()[0]) 这个获得的是局域网IP: 可以ipconfig看一下: 另一个适用于所有接口。...的话,那这个获得的,可以认为是公网IP了。
Python可以使用socket模块来进行域名扫描。..., ".org"] # 扫描域名 for suffix in suffixes: domain = prefix + suffix try: ip = socket.gethostbyname...(domain) print("域名 %s 的IP地址是 %s" % (domain, ip)) except Exception as e: print("域名...然后,我们通过循环遍历每个后缀来生成完整的域名。最后,我们使用socket.gethostbyname()函数来获取域名对应的IP地址。如果域名无法解析或者出现其他错误,该函数会抛出一个异常。...需要注意的是,进行域名扫描时需要遵守相关法律法规和网络安全规定,不要对未经授权的域名进行扫描,以避免引起不必要的纷争或者违法行为。
今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 显然,你的第一映象是 IP 地址和端口号。 没错,就是 IP 地址和端口号。...而 Socket 编程中并不能直接使用域名,而是采用 IP + 端口号这种形式进行寻址的。 假设你现在需要编写一个网络请求库,有可能是 HTTP 协议的,也有可能是 WebSocket 协议的。...你要解决的第一个问题就是解析 URL,将网址转换成 IP + 端口号,甚至还需要分割出协议类型、资源路径以及是否采用更安全的传输方式等。...接下来,我们来尝试一下,如何将域名转换为 IP + 端口号和 is ssl 这样的格式。 代码实现 URL 解析 开始之前,我们先规划一下基本步骤: ?...拿到 hostname 后,调用 socket 库的 getbyhostname 方法就能够得到目标服务器的 IP 地址了。
本期任务:使用python脚本实现端口扫描。 准备工具:选项分析器:optparse;网络库:socket 问题引入 1. 端口扫描器扫描效果如何?...主函数的设计采用选项分析器optparse模块 optparse是一个功能强大,易于使用的选项分析器,专门用来处理命令行的参数。 使用它之前我们需要实例化一个optparse对象。...获取到了主机名和IP地址后,程序跳转到portScan函数并传入参数。...2. portScan()函数的设计 portScan用来获取主机名的IP地址,并逐个将其发送到connScan函数中去。...其中,socket.gethostbyname(hostname)是域名解析,如:socket.gethostbyname('www.baidu.com')会返回百度的IP地址,而socket.gethostbyaddr
官方关于socket编程的文档地址为https://docs.python.org/2/library/socket.html,我承认我看起来都很费劲。...我们先看一下socket函数的使用方式: socket.socket([family[, type[, proto]]]) 我们看到socket函数接收三个参数,下面分别介绍: family——套接字对象使用的地址族...图5 现在我们获得了ip,端口我们使用80,现在可以连接服务器了。...随后我们使用socket.sendall方法发送信息。信息发送之后,如果没有异常产生,应该会得到知乎服务器的响应内容。那么如何接收信息呢?...s.listen(10) print 'Socket now listening' listen方法接收一个参数,用来指定可以同时挂起的连接数。 监听模式之后,如果有客户端连接进来,如何接收连接呢?
IP获取和域名解析 首先,我们创建了两个函数,get_ip_address 和 resolve_domain,用于获取给定域名的IP地址以及解析给定IP地址的域名。这对于网络相关的任务非常有用。...时间戳转换 最后,我们有一个 timestamp_to_datetime 函数,用于将时间戳转换为人类可读的日期时间格式。这对于处理日志文件或其他包含时间戳的数据非常实用。...示例用法 最后,我们展示了这些函数的简单用法,并说明如何将它们整合到你的项目中。..." 获取指定域名的 IP 地址 """ try: ip_address = socket.gethostbyname(domain) return...首先,通过 get_ip_address 和 resolve_domain 函数,我们实现了获取域名的IP地址和解析IP地址的域名的功能,适用于网络相关的任务。
gethostbyname和gethostbyname_ex均是socket模块中的一个函数,都可用于来获取本地ip地址。...PS:Linux(云服务器)服务器使用下面的函数来获取到的是公网IP地址,在本地的Windows机器上面获取到的是内网IP地址。...gethostbyname函数获取本地ip地址 >>>impoert socket >>> socket.gethostbyname(socket.gethostname()) '116.196.107.126...hostname) '116.196.107.126' gethostbyname_ex函数获取本地ip地址 >>> socket.gethostbyname_ex(socket.gethostname...地址,并以字符串的形式返回;而gethostname_ex则可以获取到更多的信息,包括hostname并以元组的方式返回。
我们打开浏览器输入网址www.google.com,不对!刚才那个是一个不存在的网址,我们还是用www.phpgao.com为例吧。...作为一名WEB开发人员,这是我们必须知道的。 下面我们简单的模拟一下刚才的过程。 如何使用以下代码? 在python的交互式环境中逐行输入命令。...即在命令行中输入python 模拟 DNS解析 import socket host = 'www.phpgao.com' # 查询域名的IP server_ip = socket.gethostbyname...,并加一点注释 # coding=UTF-8 import socket host = 'www.phpgao.com' # 查询域名的IP server_ip = socket.gethostbyname...我们接收到http协议就相对复杂一点,有响应状态码、服务器软件信息、响应发送时间GMT格式、内容的元信息、Connection表示链接的持续性,最后的X-Cache-CFC是老高自定义的响应头,表明缓存是否命中
了解DNS DNS的重要性 想象一下,如果没有 DNS,我们每次想访问一个网站都需要输入它的 IP 地址,那将是多么繁琐和不方便!...我们可以使用 socket.gethostbyname() 方法来进行简单的 DNS 查询。...address of {hostname} is {ip_address}") 在这个示例中,我们通过 socket.gethostbyname() 方法来获取 www.example.com 的 IP...然后,我们遍历查询结果并打印出 IP 地址。 使用 aiodns 库进行异步DNS查询 aiodns 是一个基于异步 IO 的 DNS 解析库,它允许我们在异步应用程序中进行高效的 DNS 查询。...最后,我们使用 asyncio.run() 来运行异步函数。 DNS缓存 在讨论 DNS 的操作时,我们还需要了解一下 DNS 缓存。
上一篇讲到了如何用Python开发字典,而当我们手里有了字典 就可以进一步去做爆破的任务了,可以用现成的工具,当然也可以自己写 接下来我就要一步一步来写爆破工具!...爆破MySQL: 想要爆破MySQL目标至少要允许远程连接 我这里没有开启远程连接,只是爆破本地的MySQL 实际上,如果掌握了如何爆破本地MySQL,那么想要远程爆破MySQL也是很轻松的 最基本的实现...和端口,直接执行即可 进阶的MySQL爆破脚本:写的很完整,支持多线程 # -*-coding:utf-8 -*- """ MySQL爆破脚本 用法: python MysqlCrack2.py -H...Metasploitable Linux 启动后默认开启FTP服务,我这里的IP是192.168.232.129 Metaploitable Linux的FTP可以匿名登陆,并且已知一个账号密码为:msfadmin-msfadmin...msfadmin manager 123456 实际使用:-H 输入IP -u 用户名字典 -p 密码字典 ?
= None # python 函数返回值 return,函数中一定要有return返回值才是完整的函数。...如果你没有python 定义函数返回值,那么会得到一个结果是None对象,而None表示没有任何值 print(verify_input()) ...地址 host_name = socket.gethostname() # 打印主机名 ip_address = socket.gethostbyname...(host_name) # 打印ip地址 print('Host name:' + host_name) # 主机名... print('ip address:' + ip_address) # 地址 print_machine_info() 结果: “
你想给另一台计算机发消息,你知道他的IP地址,他的机器上同时运行着qq、迅雷、word、浏览器等程序,你想给他的qq发消息,那想一下,你现在只能通过ip找到他的机器,但如果让这台机器知道把消息发给qq程序呢...3.等待对方接听 4.say “hi 约么,我有七天酒店的打折卡噢~” 5.等待回应——》响应回应——》等待回应。。。。...对象\) 2.输入你想拨打的电话\(connect 远程主机ip+port\) 3.等待对方接听 4.say “hi 约么,我有七天酒店的打折卡噢~”\(send\(\) 发消息。。。...是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET)。...socket.getqdn() 拿到本机的主机名。 socket.gethostbyname() 通过域名解析ip地址。
socket 库) 使用 socket 库进行端口扫描: 更新日志: 调用 socket 中的库对目标进行扫描,并统计目标端口的开放情况 #!...datetime.now() # 创建线程 pool = ThreadPool(processes = 32) # 设置线程数 results = pool.map(scan_port,ports) # 设置需要使用多线程的函数名称...,传递参数的集合,该函数会将传递参数的集合分条传递到函数中使用 pool.close() pool.join() print '本次端口扫描共用时 ', datetime.now() - t1 演示...Version 1.2 (optparse 库) 使用 optparse 对 python 使用过程的命令进行解析 更新日志: 调用 python 的 optparse 库,实现在运行该脚本的过程中使用...gethostbyname_ex 函数获取目标的域名、ip 等信息 更新日志: 1、使用 gethostbyname_ex 函数实现对输入的域名进行解析 2、使用-D 参数传递域名,扫描器将对域名相关的
大家好,我是皮皮。 前言 Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程。...端口号的范围为0~65535(用户端口号一般大于1024),协议有很多种,一般我们经常用到的就是TCP,IP,UDP。下面我们来详细了解下Socket吧。...主机名,相同地址的其它可用主机名的列表,IPv4 地址列表) #网络ip地址 socket.gethostbyname(socket.getfqdn(socket.gethostname())) #...IP地址 socket.getnameinfo(('192.168.1.4',5434),0) #判断是否支持IPV6 socket.has_ipv6 #返回服务所使用的端口号 socket.getservbyname...#假如端口被socket使用过,并且利用socket.close()来关闭连接,但此时端口还没有释放,要经过TIME_WAIT的过程之后才能使用;为了实现端口的马上复用,可以选择setsocket()函数来达到目的
在python中获取ip地址和在php中有很大不同,在php中往往比较简单。那再python中怎么做呢?...我们先来看一下python 获得本机MAC地址: import uuid def get_mac_address(): mac=uuid.UUID(int = uuid.getnode())....hex[-12:] return ":".join([mac[e:e+2]for ein range(0,11,2)]) 下面再来看一下python获取IP的方法:使用socket import...socket # 获取本机电脑名 myname = socket.getfqdn(socket.gethostname()) # 获取本机ip myaddr = socket.gethostbyname...(myname) print(myname) print(myaddr) 输出结果为: DESKTOP-NV36C35 192.168.41.1 但是注意这里获取的IP是内网IP 在linux下可用
服务器代码改进 / bug改进 (1).发送函数改为@function (2).异常运行函数改为三叠函数 (3).服务端在下线时列表在遍历时 增加下线的服务端 -> 触发RuntimeError (...完整代码 | 1. 服务器代码改进 / bug改进 (1).发送函数改为@function class Server(): ......sock.close() (4)获取真正本机的ip地址 如果直接用socket.gethostbyname(socket.gethostname())获取地址,很有可能是错误的...(Vmware虚拟机的地址、127.0.0.1等) 搜索后我得到了下面这段精巧的代码: ... def get_host_ip() -> str: """get current IP address...= s.getsockname()[0] finally: s.close() return ip 通过UDP尝试连接8.8.8.8:80,不管是否连接成功,获得的本机
在python中获取ip地址和在php中有很大不同,在php中往往比较简单。那再python中怎么做呢?我们先来看一下python 获得本机MAC地址:import......在python中获取ip地址和在php中有很大不同,在php中往往比较简单。那再python中怎么做呢?...我们先来看一下python 获得本机MAC地址: 1 2 3 4 import uuid def get_mac_address(): mac=uuid.UUID(int = uuid.getnode...()).hex[-12:] return ":".join([mac[e:e+2] for e in range(0,11,2)]) 下面再来看一下python获取IP的方法:使用socket...#ip地址 但是注意这里获取的IP是内网IP 方法三:在linux下可用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import
python的网络编程有不少难点,也容易忘记,最近我会陆续发出系统、完整pythonnet知识的博客,一边复习一边分享,感兴趣的可以关注我。 话不多说,开始吧。... 进入交互模式 通过计算机名获取匹配的IP socket.gethostbyname("localhost") "127.0.0.1" 获取本机的计算机名 socket.gethostname() "...xxxx" IP地址 网络上确定一台主机的地址 IPv4:点分十进制 IPv6:128位 网络连接测试 ping 172.60.50.182 特殊IP 127.0.0.1 本地测试IP 0.0.0.0... 自动使用本地可用网卡IP 192.168.1.0 代表当前网段 192.168.1.1 通常为网关地址 192.168.1.255 广播地址 IP地址转换为十六进制表达 socket.inet_aton...连接的客户端的地址 (ip,port) * 阻塞函数 : 当程序运行到阻塞函数位置,如果某种条件没有达成则暂停程序运行,知道条件达成结束阻塞 5.
Python获取本机IP地址的一般方法为 import socket IP = socket.gethostbyname(socket.gethostname()) 通过gethostname...如果主机有多个网卡/IP,怎样获取某个指定的IP地址呢? 一个方法是通过socket.gethostbyname_ex获取主机IP地址列表,然后遍历列表取得自己需要的IP。... localIP print(GetLocalIPByPrefix('192.168')) 更简单的方法(不用修改代码,还是用socket.gethostname函数),是通过配置hosts...ip 的方法 import psutil # 多网卡情况下,根据前缀获取IP # 测试可用:Windows、Linux,Python 3.6.x,psutil 5.4.x # ipv4/ipv6 地址均适用...# 注意如果有多个相同前缀的 ip,只随机返回一个 def GetLocalIPByPrefix(prefix): localIP = '' dic = psutil.net_if_addrs()
领取专属 10元无门槛券
手把手带您无忧上云