微信小程序获取用户ip

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序获取用户ip相关的知识,希望对你有一定的参考价值。

微信小程序获取用户ip,能给我部分代码吗?特别是从一些api得到数据后要怎么弄,才能提取ip。

微信小程序出来有一段时间了,大家都知道小程序开发过程中需要有APPID来在微信上测试,官方文档都是默认你已经有了微信小程序的APPID,但是如何能获取到微信小程序确实是个技术活,下面就来讲讲个人开发者如何获得小程序。

1、首先到微信公众平台注册账号,注册时选择小程序类型

2、选好类型后,进入正常的注册流程,这里就不细说了很简单

3、其实前面两步还是蛮简单的,只要根据提示做就好了,重点就是信息登记的内容如何写,如下图所示,我列举了一些其中的一些注意事项,特别是里面红色文字标注的点非常重要

4、注意点:1、重点就是完善组织机构代码和组织机构代码证信息,组织机构代码9位或者18位,你的身份证号码也是可以的。组织机构代码证我就去百度随便找了个图片上传上去就可以了,为了能够做微信小程序开发,我也是拼了,试了好长时间,才摸索出来的。2、管理员信息登陆,可以选择企业也可以选择个人。如果是企业需要填写企业营业执照。如果是个人你只要填写正确的管理员身份信息就可以了。

5、验证方式有两种,一种使选择给腾讯公司指定账户小额打款认证的方式,一种使微信认证的方式。

6、我选择的是微信认证的方式,各位可以根据自己的需求选择认证方式,然后就是常规的流程,其实还是挺简单的。


参考技术A

正确的姿势应当是 使用 wx.request 请求自己为小程序提供服务的api地址。然后自己在服务端获取 客户端ip地址。

这个请求的 REFERRER_URL 应当是符合小程序文档中描述的 地址。但是ip应当是客户端ip。

我认为这个ip是间接传递过来的,但我不能确保你使用的web 框架提供的函数可以获得真实ip,应当检查 request header 中的 X-Forwarded-For 和 X-Real-IP 所包含的ip信息。

以下是一段python 代码 来获取请求的客户端 ip,如果你是一个老练的程序员,那么python这种代码风格犹如老汉推车的肯定可以看懂。

def get_remote_addr():

ip = request.headers.get('X-Forwarded-For')

if ip:

ip = ip.split(',', 1)[0]

else:

ip = request.headers.get('X-Real-IP')

return ip or request.remote_addr

request.remote_addr 是我使用的框架告诉我的ip,在我的应用中,使用了nginx做了反向代理到gunicron,那么这个ip必定是错误的。于是要检查 X-Forwarded-For 和 X-Real-IP ,这两个是在请求被转发后 约定俗成 存放 每一步 ip地址的 自定义 Header项。X-Forwarded-For 可以是一串ip,第一个就是客户端的ip。然而当每一步接受请求的服务端 没有填入可信的ip地址的话,那么真实的ip信息你将无法获取。加入你自己的服务端有内部转发,反向代理等,要注意这些。

------------------------------------------------------------

以下摘录自微信小程序官方文档的Q&A章节------------------------------------------

网络请求的 referer

网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/appid/version/page-frame.html,其中 appid 为小程序的 appid,version 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。

-------------------------------------

需要注意的是,生产环境请求的服务端地址必须:

    添加到小程序许可的api 地址列表中

    必须是https的

    必须正常备案

参考技术B 以下为JS脚本
<script>
function GetLocalIPAddress()

var obj = null;
var rslt = "";
try

obj = new ActiveXObject("rcbdyctl.Setting");
rslt = obj.GetIPAddress;
obj = null;

catch(e)

//异常发生

return rslt;

document.write("你的IP是:" + GetLocalIPAddress());
//-->
</script>
微信小程序中可以使用JS脚本,用JS就可以获取到了。追问

小程序和js不太一样

追答

小程序是H5,可以在其中引用js
然后在打包时将上面的代码敲入ip.js就行

参考技术C 这个要解锁才行啊。。
你搜下兔子》转换器,去官网下载相应版本安装,
然后打开浏览器再看就可以了,好用有效。
参考技术D 第一步网上说兔子~转换器转换器这个软件可以修改转换器地址
第二步网上搜索兔#子转换器转换器下载
第三步打开软件连接其他城市转换器即可
注册就能免费使用。

微信小程序,weixin,怎么获取用户的Openid

参考技术A 获取微信OpenId 先获取code 再通过code获取authtoken,从authtoken中取出openid给前台 微信端一定不要忘记设定网页账号中的授权回调页面域名 流程图如下 主要代码 页面js代码 /* 写cookie */ function setCookie(name, value) var Days = 30; var exp = new Date(); exp/connect/oauth2/authorize?appid=") /sns/oauth2/access_token?"; StringBuffer url = new StringBuffer(uri); url.URL; public class HttpClientUtil // 设置body体 public static void setBodyParameter(String sb, HttpURLConnection conn) throws IOException DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(sb); out.flush(); out.close(); // 添加签名header public static HttpURLConnection CreatePostHttpConnection(String uri) throws MalformedURLException, IOException, ProtocolException URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setUseCaches(false); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setInstanceFollowRedirects(true); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setRequestProperty("Content-Type","application/json"); conn.setRequestProperty("Accept-Charset", "utf-8"); conn.setRequestProperty("contentType", "utf-8"); return conn; public static byte[] readInputStream(InputStream inStream) throws Exception ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) outStream.write(buffer, 0, len); byte[] data = outStream.toByteArray(); outStream.close(); inStream.close(); return data; 封装AuthToken的VO类 package com.huatek.shebao.wxpay; public class AuthToken private String access_token; private Long expires_in; private String refresh_token; private String openid; private String scope; private String unionid; private Long errcode; private String errmsg; public String getAccess_token() return access_token; public void setAccess_token(String access_token) this.access_token = access_token; public Long getExpires_in() return expires_in; public void setExpires_in(Long expires_in) this.expires_in = expires_in; public String getRefresh_token() return refresh_token; public void setRefresh_token(String refresh_token) this.refresh_token = refresh_token; public String getOpenid() return openid; public void setOpenid(String openid) this.openid = openid; public String getScope() return scope; public void setScope(String scope) this.scope = scope; public String getUnionid() return unionid; public void setUnionid(String unionid) this.unionid = unionid; public Long getErrcode() return errcode; public void setErrcode(Long errcode) this.errcode = errcode; public String getErrmsg() return errmsg; public void setErrmsg(String errmsg) this.errmsg = errmsg; 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是关于微信小程序获取用户ip的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序获取位置信息

微信小程序可以获取用户信息都有哪些

微信小程序用户授权

微信小程序获取用户信息

微信小程序—如何获取用户输入文本框的值

微信小程序用户信息获取接口的调整