一、场景
在对接微信H5支付API时,有一关键步骤是获取到用户的真实IP,微信开发文档给出的解释为:
H5支付要求商户在统一下单接口中上传用户真实ip地址“spbill_create_ip”, 为保证微信端获取的用户ip地址与商户端获取的一致.
二、方法
1、微信官方方法
(1)没有代理
function get_client_ip() { $cip = "unknown"; if ($_SERVER['REMOTE_ADDR']) { $cip = $_SERVER['REMOTE_ADDR']; } elseif (getenv("REMOTE_ADDR") { $cip = getenv("REMOTE_ADDR"); } return $ip }
(2)有代理
有代理的情况下,因为要代替客户端去访问服务器,而代理服务器这里的IP数据报的包头做了修改,这样一来,后端程序就无法获取到用户的真实IP。
nginx代理情况:
在nginx配置中加入:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Apache代理的情况:
vi /usr/local/apache/conf/httpd.conf Include conf/extra/httpd-remoteip.conf vi /usr/local/apache/conf/extra/httpd-remoteip.conf LoadModule remoteip_module modules/mod_remoteip.so RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1
博主备注:腾讯文档依旧保持尽可能让读者搞不懂的态度,所以下面给出简单可行的方法。
2、非官方方法
以下只使用Java开发语言
(1)代码
private static final String[] headInfo = { "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED", "HTTP_X_CLUSTER_CLIENT_IP", "HTTP_CLIENT_IP", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED", "HTTP_VIA", "REMOTE_ADDR", "PROXY_FORWARDED_FOR", "X-Real-IP"}; /** * * getClientIpAddress:(获取用户ip,可穿透代理). * @author SongYapeng * @Date 2018年3月2日下午4:41:47 * @param request * @since JDK 1.8 */ public static String getClientIpAddress(HttpServletRequest request) { for (String header : headInfo) { String ip = request.getHeader(header); if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { if (ip != null && ip.indexOf(",") != -1) { String[] ips = ip.split(","); for (int i = 0; i < ips.length; i++) { String ipMulti = (String) ips[i]; if (!("unknown".equalsIgnoreCase(ipMulti))) { ip = ipMulti; break; } } } return ip; } } return request.getRemoteAddr(); }
(2)说明
没有代理的情况下使用request.getRemoteAddr() 可以正常获取到客户端的IP地址。
但是,秉承着别人没问题自己必然出Bug的传统,大多数情况下,总是获取到的是本地IP。
通过了解到反向代理修改了数据报的头部,上面headInfo数组中罗列了代理后HTTP头信息中可能增加的信息字段。
通过方法getClientIpAddress(),可穿透代理获取到用户真实IP。
(3)补充
上面方法不能保证百分之百没问题,因为不同的代理服务器可能需要不同的配置。我们使用的是F5负载均衡,效果不太理想,后通过运维大哥在F5上配置X-Forwarded-For后才得以实现。
相关资讯
换ip软件帮您解决ip被封烦恼!
换ip软件帮您解决ip被封烦恼!我想做互联网工作的基本上都需要换下ip吧,很多时候我们做推广经常被封账号,特别是同一个IP自问自答马上封你没商量,但是这些推广也
来源:黑核混拨IP网
2018-12-25 15:52:02
不知道怎么样修改ip地址可以用黑核混拨IP软件
现在做推广越来越难做了,动不动就被封号,要么就是一个IP只能登陆一个账号,这就尴尬了,如果只用一个账号推广根本不见效啊,或者说见效也效果不大,只能大批量的做推广
来源:黑核混拨ip加速器网
2018-12-25 16:28:24
黑核混拨IP加速器让你知道如何改变ip地址
被论坛禁言了?玩游戏作弊,被封号了?被人屏蔽IP是件很让人不爽的事情,平时正忙的时候被封禁,会有种天塌下来的感觉。如何改变ip地址成了我们比做的事情,不改变IP
来源:黑核混拨ip加速器网
2018-12-25 16:58:44
黑核混拨IP加速器轻松解决怎么修改手机ip地址问题
有些视频播放站很坑,一天只能观看几个视频就需要开通会员才能看了,但是我们又不想冲会员怎么办,那就需要修改手机IP地址了,但是怎么修改手机IP地址呢?不是谁都懂的
来源:黑核混拨ip加速器网
2018-12-25 17:39:01
还在找ip地址修改器吗?来试试黑核混拨IP加速器吧
国内ip地址修改器顾名思义就是转换自己的IP地址的一个工具或者一款软件,ip地址修改用哪些工具好处呢,因为工作或者个人需求,修改IP后可以注册一些限制IP注册的
来源:黑核混拨ip加速器网
2018-12-25 18:13:13
在国外想玩lol国服吗?来试试这个ip加速器吧
身在国外想玩下国服游戏是一件很痛苦的事情,因为网络延迟太高了,卡到让人怀疑人生的那种地步,有多卡呢?玩个游戏能卡出漫画的效果来,看着都着急啊。特别是玩游戏的时候
来源:黑核混拨ip加速器网
2018-12-27 17:07:17
什么是ip代理软件?可以修改ip地址吗?
经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们
来源:黑核混拨ip加速器网
2018-12-27 17:27:18
实用https代理服务器别人能查到真实地址吗
现在,高匿代理ip时代已经到来,但是,还是有很多人不了解高匿代理ip到底有什么用,虽然随着网络科技的发展,网络对我们的生活带来了很多方便,也带来了更多的选择,网
来源:黑核混拨ip加速器网
2018-12-28 17:02:47
Python爬虫如何获取大量的ip预防被封
python爬虫抓取和分析京东商城评价互联网购物现已成为当下最流行的购物方式,很多用户在互联网购买商品后,会对商品包装、质量,商家服务做出客观评价。商品评价的好
来源:黑核混拨ip代理
2019-01-19 10:51:05
能满足用户需求的代理ip软件才能生存下去
现在的大环境下,什么行业的竞争都是非常激烈的,同样的,代理ip软件在这个环境下同样非常激烈,但是黑核混拨ip加速器能再这样激烈竞争的环境下生存下来,并且迅速地俘
来源:黑核混拨ip加速器网
2019-01-09 15:41:12
穿透代理获取用户真实IP地址
一、场景在对接微信H5支付API时,有一关键步骤是获取到用户的真实IP,微信开发文档给出的解释为:H5支付要求商户在统一下单接口中上传用户真实ip地址“spbi
来源:黑核动态ip代理
2019-06-11 10:20:57
推荐阅读
Copyright © | 广州网连信息技术有限公司动态ip代理版权所有 备案号:粤ICP备18088888号-15 网站地图