【Requests】获取本地的请求IP和域名解析的IP
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
这篇文章没啥用,请略过。
前言
先来假设两个使用 Python 的网络请求库 Requests
场景:
- 使用代理 ip 访问某网站,想查看当前的请求的代理 ip
- 访问的是域名,但想查看
域名解析
后的 ip
本篇文章就来介绍以上两种获取 ip
的方法。
Requests
的安装和使用参考 官方文档:https://docs.python-requests.org/en/latest/
前置知识
HTTP请求
引用这张图是想说,后面会用到 Socket连接(有了 Socket连接,就可以获取到本地和远程的
ip
了。
HTTP请求和响应步骤
- 图片来自 https://zhuanlan.zhihu.com/p/38240894
Socket
看到 菜鸟教程 的Socket函数介绍,后面会用到这两个Socket 函数。
socket.getpeername()
返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。socket.getsockname()
返回套接字自己的地址。通常是一个元组(ipaddr,port)
DNS查询
网站:https://tool.chinaz.com/dns/?type=1&host=blog.csdn.net
这个网站可以查看该域名 blog.csdn.net 所有的 ip
,看到有多个ip,这就是为什么访问同一个网站时却会是不同的 ip
。
打个比喻:就近原则,哪个服务器距离当前请求近,就由那个服务器来处理请求。(大致如此)
受害网站
下面请出本次的受害者:https://httpbin.org/get
代码
import requests
from requests.models import Responseurl = 'https://httpbin.org/get'resp: Response = requests.get(url, stream=True)
localhost_address = resp.raw._connection.sock.getsockname()
remote_address = resp.raw._connection.sock.getpeername()
print("local_address is ==> ", localhost_address)
print("remote_address is ==> ", remote_address)
请求时候需要设定 stream=True
,官方释义如下:
:param stream: (optional) if ``False``, the response content will be immediately downloaded.
调试模式,下断点
可以看到 Requests
响应值的 raw._connection.sock,是一个Socket连接
本地的请求IP
socket.getsockname()
:返回连接套接字的本地地址
这里可以打开CMD
,然后输入 ipconfig
,可以看到当前的主机 ip
地址;
这是没有开启代理的~
这是开启了代理的~
DNS解析的IP
从上图中可以看到,他们访问的网址不一样,但是他们的返回结果是一样的;
左侧访问的是 https://httpbin.org/get,右侧访问的则是该域名解析后的 ip
:https://3.226.169.83/get
至于为什么会这样,这不是本文章要讨论的内容~
socket.getpeername()
:返回连接套接字的远程地址
至于这个ip
为啥不和上图的一样,因为它有多个ip
吖!
后话
本次的分享到此结束,
如有疑问,请自行解决。
【Requests】获取本地的请求IP和域名解析的IP相关推荐
- Python获取本地mac地址、主机名、IP地址
1 在windows系统,命令行输入 ipconfig /all 此处获得mac地址. 2 在Python中获取mac地址 import uuid mac = uuid.UUID( int=uuid. ...
- C/C++:Windows编程—代码获取本地所有网卡信息(网卡描述,IP地址,子网掩码,MAC地址)
先看效果 看代码 使用 GetAdaptersInfo 函数获取网卡的所有信息. MSDN函数说明 https://docs.microsoft.com/en-us/windows/desktop/a ...
- 将域名解析到空间服务器,如何把域名解析到IP
关于如何把域名解析到IP 把域名解析到IP,即设置域名解析使域名指向服务器空间. 1.获取IP地址 联系你的网站提供服务商获取你的IP地址,或者如果你的IP地址的格式有端口,如202.106.0.20 ...
- 获取本地IP地址信息,请求地址,请求的操作系统信息 ,浏览器信息
程序运行效果图,如果这种有你需要的信息,不妨随着小编一起看下去吧! (1)接口 在浏览器上访问 localhost:8089/test/cs @RequestMapping("/cs&quo ...
- 关于java获取本地ip的几种方法
关于java获取本地ip的几种方法 1.获取本地ip的方法 System.out.println(InetAddress.getLocalHost().getHostAddress()); 2.域名解 ...
- java将域名解析为IP地址,获取网卡的配置信息
DNS域名解析系统 系统简介:用户通过输入需要查询的域名,便可输出域名对应的一个IP地址或多个IP地址. 系统功能:1.通过输入域名可以查询域名所对应的IP地址. 2.可以获取当地的主机IP地址和本地 ...
- vue中获取本地IP地址
vue中获取本地IP地址 IP地址需要通过js获取: 网上有很多查询接口可以获取到IP,查到的搜狐的比较多,我这里就用搜狐的: http://pv.sohu.com/cityjson?ie=utf-8 ...
- 通过js获取本地IP地址
通过js获取本地IP地址 最近在做pc项目,需要根据用户的IP地址定位城市.IP地址需要通过js获取: 网上有很多查询接口可以获取到IP,我这里用的是搜狐的: http://pv.sohu.com/c ...
- 【Qt】获取本地IP(IPv4)
1.问题描述 获取本地IP列表有"127.0.0.1".IPv4.IPv6等,一般使用IPv4,如何从已经获取的IP列表中挑出IPv4. 2.解决方法 QString ipv4; ...
最新文章
- 企业级Nginx服务基础到架构优化详解--25条
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
- JAVA学习之路 (三) 运算符
- 不要说自己没什么兴趣,也不要说自己兴趣很广泛,最好能具体到哪个方面,顺便提一下你最近看的一本该方面的书,有什么收获(转)...
- hdu 1599(Floyd求最小环)
- echart饼图标签重叠_Echarts 解决饼图文字过长重叠的问题
- gitlable iphone_使用gitlab ci构建IOS包并发送通知消息到企业微信
- (王道408考研数据结构)第四章串-第一节:串的定义和基本操作及存储结构
- 定时任务crontab
- php 获取上个月、下个月、本月的日期 当前月份的前后一个月
- 对区块链技术的一些思考
- Python学习第二章:变量和简单类型
- html 广告加载页面,JS广告代码延迟加载或是最后加载加快页面载入
- 【Unity 框架】QFramework v1.0 使用指南 架构篇:05. 引入 Utility | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
- vm使用PE安装系统(1)
- Oracle数据库查询十个小技巧
- 《编写高质量代码(改善Java程序的151个建议)》读书笔记
- css样式 向下补白,CSS尺寸与补白属性-----margin和padding
- 由swr_get_delay想到的
- 注册用户数破亿 平安金管家APP成全球寿险首个过亿应用