如何从客户端的ajax请求中获取到客户端公网ip地址?

UPC子夜 2021-02-17 02:10:35
搭建了一个tomcat服务,希望在client端通过http调用的时候,获取到客户端真实的公网ip地址。

当前客户端调用请求时,server端通过request.getHeader("x-forwarded-for") getHeader("Proxy-Client-IP") getHeader("WL-Proxy-Client-IP") getRemoteAddr()等方法都尝试过了,取到的一般都是127 或者192等,取不到真正想要的地址,比如 124.128.77.*。

访问http://ip.chinaz.com/这种网站时,就能够返回当前客户端所在的ip地址,不知道怎么实现的。

别告诉我让客户端访问上述网站,爬取真实ip,这种方法可行,不过不稳定,万一网站停服就over了。

有没有更加保险的方法获取client端的公网ip?感谢。

...全文
661 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
UPC子夜 2021-02-24
  • 打赏
  • 举报
回复
引用 7 楼 我的大神666 的回复:
私网网段: A类:10.0.0.0/8:10.0.0.0-10.255.255.255 B类:172.16.0.0/12:172.16.0.0-172.31.255.255 C类:192.168.0.0/16:192.168.0.0-192.168.255.255 20.10段就是有效公网ip,有可能请求是通过20.10段转发到你服务器. 最简单验证: 在收到请求时执行脚本命令查看输出: windows: netstat -ano | findstr "80" > log.txt linux: netstat -ant | grep "80" > log.txt 等执行完后才结束网络请求.
感谢 是因为网站搭在了局域网里 所有请求都被局域网的nat处理了 所以获取的都是无线网分配的ip 把网站穿透到公网上 客户端再访问 remoteaddr中获取到的ip就对了
「已注销」 2021-02-19
  • 打赏
  • 举报
回复
修改编辑(注释去掉)${catalina}/conf/server.xml:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %U %q %S" resolveHosts="false" />
%h是客户端ip,%U是请求url路径,%q是get参数:?a=1&b=2,%S是session ID 1.如果session ID跟response.getHeader("Set-Cookie")里的JSESSIONID或者跟request.getSession().getId()对的上,从日志检索session ID,然后正则出ip; 2.另一种客户端get一个随机数?id=xxxxxxxx,收到请求后从日志检索id=xxxxxxxx,然后正则出ip;
「已注销」 2021-02-19
  • 打赏
  • 举报
回复
私网网段: A类:10.0.0.0/8:10.0.0.0-10.255.255.255 B类:172.16.0.0/12:172.16.0.0-172.31.255.255 C类:192.168.0.0/16:192.168.0.0-192.168.255.255 20.10段就是有效公网ip,有可能请求是通过20.10段转发到你服务器. 最简单验证: 在收到请求时执行脚本命令查看输出: windows: netstat -ano | findstr "80" > log.txt linux: netstat -ant | grep "80" > log.txt 等执行完后才结束网络请求.
UPC子夜 2021-02-19
  • 打赏
  • 举报
回复
引用 4 楼 我的大神666 的回复:
修改编辑(注释去掉)${catalina}/conf/server.xml:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %U %q %S" resolveHosts="false" />
%h是客户端ip,%U是请求url路径,%q是get参数:?a=1&b=2,%S是session ID 1.如果session ID跟response.getHeader("Set-Cookie")里的JSESSIONID或者跟request.getSession().getId()对的上,从日志检索session ID,然后正则出ip; 2.另一种客户端get一个随机数?id=xxxxxxxx,收到请求后从日志检索id=xxxxxxxx,然后正则出ip;
这个获取到的ip也是20.10段 是无线网给分配的ip 按这个去定位 就是美-国 不是我们想要的124.128.77段
UPC子夜 2021-02-19
  • 打赏
  • 举报
回复
引用 3 楼 asdfv63 的回复:
如果是公网访问的服务端,得到了美国网段的地址,可以使用这个机器到你上面发的http://ip.chinaz.com/这里查下,因为有的拨号上网分配的ip存在外国的,尤其是那种长城宽带的
从他们机器访问http://ip.chinaz.com/ 得到的是124.128.77 能定位到济南 但是request中getremoteaddr接收到的还是20.10段 应该是无线网给分配的ip地址
asdfv63 2021-02-17
  • 打赏
  • 举报
回复
如果是公网访问的服务端,得到了美国网段的地址,可以使用这个机器到你上面发的http://ip.chinaz.com/这里查下,因为有的拨号上网分配的ip存在外国的,尤其是那种长城宽带的
UPC子夜 2021-02-17
  • 打赏
  • 举报
回复
引用 1 楼 asdfv63 的回复:
获取到的地址是127 或者192等,是不是这些客户端和你的服务端是本机或者同一个局域网的
本机是127 其他机器有获取到20.10段的 也不对 因为20.10定位到美-国去了 肯定获取的还是有问题的
asdfv63 2021-02-17
  • 打赏
  • 举报
回复
获取到的地址是127 或者192等,是不是这些客户端和你的服务端是本机或者同一个局域网的
##KodExplorer (http://kalcaddle.com/) ###ver2.61(2014.7.12) `商业版授权请联系:kalcaddle#qq.com` #### 1.是什么: - Kodexplorer为千帆网络工作室开发的一款服务器文件管理程序。 - 完美取代FTP管理:可用于服务器文件管理,zip解压缩 备份还原、支持图片、音乐、视频预览、office、pdf等格式在线预览。文件夹拖拽上传……。 - 在线编程:支持几乎所有编程语言的在线编辑(高亮,多光标编辑.堪比本地的sublime) - 极佳的操作体验:及其便捷的快捷键支持,让你拥有本地化的体验 - 文等多语言支持:文编码全面兼容,文件编辑自动适配。 - 超快的速度:全面采用Ajax+Json进行数据通信,毫秒级的响应速度; - 全平台兼容性:Win Linux Mac (Apache、Nginx、IIS) #### 2.使用场景: - 取代FTP,服务端、客户端软件等复杂的安装配置。kod可以一键安装随处使用. - 你可以用它来管理你的服务器(备份,在线解压缩,版本发布....) - 你可以把他当做管理linux的一个操作系统界面 - 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来分享文件 - Web IDE / browser code editor awesomeness - 更多场景等你来挖掘!…… #### 3.使用说明 管理员: admin/admin 普通用户:demo/demo 游客用户:guest/guest [如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧! (data目录没有写权限会导致配置修改不能保存、不能新建用户等) [关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改 php.ini:`upload_max_filesize = 1000M post_max_size = 1000M` [关于解压缩问题] 程序不做任何限制,如若失败请设置php内存限制。memory_limit 1000M [关于兼容性] 建议使用chrome firefox ie9+ 体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。 [文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器) [忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin 则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3" ![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png) ###ver2.61 `2014/7/12` ---- ####update: - 实时搜索,根据搜索框内容变化,实时选匹配到的结果; - 弹出搜索框遍历子文件夹递归搜索 - session key 加入kod_前缀 避免和其他系统key冲突 - 编辑器选优化 选择鼠标到窗口外事件处理 ####fix bug:(bug解决和程序优化) - backspace后退截获浏览器事件,作为后退前一次访问的文件夹; - 搜索首字母不匹配问题 - 弹出层的弹出层关闭,父窗口失去焦点问题。 - 代码grunt部分代码拆分开,放到程序外面;提交到git、osc - 桌面:删除alert enter快捷键删除 - install 检测 加入跳过,(只判断用到的函数) 加入多语言 - zip压缩没有权限 提示红色,false 统一查找 - 登录成功后 验证码输错清除 - 非root用户拖拽到文件夹问题 - 非root解压问题 不能解压 - list oexe 图标问题 - 用户目录不存在判断 - fileCahe 互斥锁 reset 不用 - ie 8~10样式问题调整 ###ver2.6 `2014/7/6` ---- ####update: - 完全性优化;加入严格的校验机制 - 首次运行环境检测[data目录检测,必须的函数支持提示] - 上传已存在处理——创建副本(另外包括粘贴,解压) - 选优化 ctrl选拖拽 - 键盘快捷键选文件,多个字符

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧