获取 ip ( 第三方接口 )

本文汇总了搜狐提供的多个IP地址查询接口,包括默认使用GBK编码的接口、可设置UTF-8编码的接口以及其它多种查询方式,为网络定位和地理信息获取提供了便捷途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson
  • 搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8
  • 搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip
  • http://whois.pconline.com.cn
  • http://www.ip-api.com/
  • http://ip.chacuo.net/
  • 站长工具

转载于:https://www.cnblogs.com/justSmile2/p/9987466.html

<think>好的,用户想在微信小程序中调用第三方API来获取用户的IP地址。首先,我需要考虑微信小程序的限制,比如网络请求必须使用HTTPS,并且需要将域名添加到白名单中。用户可能需要通过第三方服务比如ip-api.com来获取IP,但需要确保该服务支持HTTPS。 然后,根据引用[2],使用云函数可以绕过域名校验,所以推荐用户使用云函数来调用第三方API。需要指导用户创建云函数,安装依赖如request-promise,并编写云函数代码发送POST请求到第三方接口。同时,处理返回的数据,确保正确获取IP地址。 另外,用户的小程序端需要调用云函数,传递API的URL参数,并在成功回调中处理IP信息。还要注意错误处理,比如网络请求失败的情况,给出提示。最后,提醒用户部署云函数和配置域名,确保服务可用性。整个过程需要步骤清晰,代码示例正确,并且注意事项要明确,避免用户遇到常见问题。</think>### 微信小程序调用第三方API获取用户IP地址教程 #### 一、实现思路 1. **使用微信云函数**:绕过小程序域名白名单限制(如第三方接口未配置白名单)[^2] 2. **选择IP查询接口**:推荐免费接口如`https://api.ipify.org`(返回纯文本IP)或`httpbin.org/ip`(返回JSON格式) 3. **安全要求**:确保接口支持HTTPS协议,符合小程序网络请求规范 #### 二、具体实现步骤 1. **创建云函数** ```javascript // 云函数入口文件 const cloud = require('wx-server-sdk') const rp = require('request-promise') cloud.init() exports.main = async (event) => { try { const ip = await rp.get('https://api.ipify.org?format=json') return JSON.parse(ip) } catch (err) { return { error: '获取IP失败' } } } ``` 2. **安装依赖** ```bash # 在云函数目录执行 npm install request-promise ``` 3. **小程序端调用** ```javascript wx.cloud.callFunction({ name: 'getIP', success: res => { console.log('用户IP:', res.result.ip) }, fail: err => { console.error('调用失败', err) } }) ``` #### 三、完整代码案例 1. **云函数配置(`getIP`)** ```javascript // 云函数进阶版(支持错误处理) const cloud = require('wx-server-sdk') const rp = require('request-promise') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { const options = { uri: 'https://httpbin.org/ip', json: true, timeout: 5000 } try { const result = await rp(options) return { code: 200, data: result.origin } } catch (err) { return { code: 500, message: '第三方接口请求失败' } } } ``` 2. **小程序页面调用** ```javascript Page({ getIPAddress() { wx.showLoading({ title: '获取中...' }) wx.cloud.callFunction({ name: 'getIP', success: res => { if (res.result.code === 200) { wx.showToast({ title: `您的IP:${res.result.data}` }) } else { wx.showToast({ icon: 'none', title: res.result.message }) } }, fail: () => { wx.showToast({ icon: 'none', title: '云函数调用失败' }) }, complete: () => { wx.hideLoading() } }) } }) ``` #### 四、注意事项 1. **接口选择**:建议优先使用返回简单数据的接口,如: - `https://api.ipify.org?format=json` - `https://ipinfo.io/json` 2. **备案要求**:如果使用自定义接口,需确保接口域名已完成ICP备案 3. **频率限制**:免费接口通常有调用次数限制(例如ipify限制每天1000次) 4. **安全处理**:建议对返回结果进行正则验证: ```javascript const ipPattern = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ if (!ipPattern.test(ip)) { throw new Error('无效IP格式') } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值