首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何更好地结构化表示一个 URL?

今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 显然,你的第一映象是 IP 地址和端口号。 没错,就是 IP 地址和端口号。...而 Socket 编程中并不能直接使用域名,而是采用 IP + 端口号这种形式进行寻址的。 假设你现在需要编写一个网络请求库,有可能是 HTTP 协议的,也有可能是 WebSocket 协议的。...你要解决的第一个问题就是解析 URL,将网址转换成 IP + 端口号,甚至还需要分割出协议类型、资源路径以及是否采用更安全的传输方式等。...拿到 hostname 后,调用 socket 库的 getbyhostname 方法就能够得到目标服务器的 IP 地址了。...「你好骚啊.gif」 完整代码可在我的 Github 仓库查看:https://github.com/asyncins/CFA/tree/master/FightingCoder

84930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何更好地结构化表示一个 URL?

    今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 显然,你的第一映象是 IP 地址和端口号。 没错,就是 IP 地址和端口号。...而 Socket 编程中并不能直接使用域名,而是采用 IP + 端口号这种形式进行寻址的。 假设你现在需要编写一个网络请求库,有可能是 HTTP 协议的,也有可能是 WebSocket 协议的。...你要解决的第一个问题就是解析 URL,将网址转换成 IP + 端口号,甚至还需要分割出协议类型、资源路径以及是否采用更安全的传输方式等。...接下来,我们来尝试一下,如何将域名转换为 IP + 端口号和 is ssl 这样的格式。 代码实现 URL 解析 开始之前,我们先规划一下基本步骤: ?...拿到 hostname 后,调用 socket 库的 getbyhostname 方法就能够得到目标服务器的 IP 地址了。

    87110

    工具| 手把手教你制作信息收集器之端口扫描

    本期任务:使用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

    1.2K60

    Python黑帽编程2.8 套接字编程

    官方关于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方法接收一个参数,用来指定可以同时挂起的连接数。 监听模式之后,如果有客户端连接进来,如何接收连接呢?

    1.1K110

    构建一个简单实用的 Python 小工具包-用Python实现开发小工具

    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地址的域名的功能,适用于网络相关的任务。

    97820

    近距离接触HTTP协议

    我们打开浏览器输入网址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是老高自定义的响应头,表明缓存是否命中

    17020

    Python开发爆破工具

    上一篇讲到了如何用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 密码字典 ?

    1.3K20

    python基本字符串操作,获取主机ip地址

    = 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()  结果:  “

    80340

    网络编程之Socket

    你想给另一台计算机发消息,你知道他的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地址。

    57310

    实战 | Python 编写端口扫描器

    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 参数传递域名,扫描器将对域名相关的

    1.2K10

    一文带你了解Python Socket 编程

    大家好,我是皮皮。 前言 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()函数来达到目的

    44110

    python TCP套接字服务器v1.1-新增服务端命令功能及修改bug(socket+PyQt5)

    服务器代码改进 / 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,不管是否连接成功,获得的本机

    52430

    pythonnet-网络编程(1)

    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.

    61130

    Python获取本机 IPMAC(多网

    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()

    2.4K10
    领券