13个版本 (5个稳定版)
3.0.0 | 2023年11月27日 |
---|---|
2.2.0 | 2023年9月20日 |
2.1.0 | 2023年4月13日 |
2.0.0 | 2023年3月29日 |
0.1.2 | 2019年10月31日 |
#690 在 网络编程 中排名
每月下载量96次
97KB
2K SLoC
IPinfo Rust客户端库
这是IPinfo.io IP地址API的Rust客户端库。它允许您查找自己的IP地址,或获取以下任何IP地址的详细信息
- IP地理位置(城市、地区、国家、邮政编码、纬度和经度)
- ASN(ISP或网络运营商、关联的域名和类型,如商业、托管或公司)
- 公司数据(使用IP地址的商业名称和域名)
- 运营商详情(移动运营商的名称以及该运营商的MNC和MCC,如果IP仅用于移动流量)
在此 处 检查我们为您IP地址拥有的所有数据。
用法
要使用IPinfo,请将以下内容添加到您的 Cargo.toml
文件中。
[dependencies]
ipinfo = "3.0.0"
入门
需要一个访问令牌,可以在 https://ipinfo.io/signup 上注册免费账户获得。
免费计划每月限制50,000次请求,并且不包含一些数据字段,如IP类型和公司信息。要获取IP地址上的完整信息列表并每天进行更多请求,请参阅 https://ipinfo.io/pricing。
示例
在 /examples
目录中有几个可以直接运行的示例。这些示例可以直接运行,只需将 <token>
替换为您的访问令牌即可。
cargo run --example lookup -- <token>
cargo run --example lookup_batch -- <token>
cargo run --example get_map
上面的 lookup
示例看起来大致如下:
use ipinfo::{IpInfo, IpInfoConfig};
#[tokio::main]
async fn main() {
let config = IpInfoConfig {
token: Some("<token>".to_string()),
..Default::default()
};
let mut ipinfo = IpInfo::new(config)
.expect("should construct");
let res = ipinfo.lookup("8.8.8.8").await;
match res {
Ok(r) => {
println!("{} lookup result: {:?}", "8.8.8.8", r);
},
Err(e) => println!("error occurred: {}", &e.to_string()),
}
}
功能
- 智能LRU缓存,以节省成本和配额。
- 结构化和类型检查的查询结果。
- 使用IPinfo的批量API进行批量IP地址查询。
- 在世界地图上定位IP地址。
国际化
当查询IP地址时,response
包括 country_name
,这是基于美式英语的国家名称,is_eu
如果国家是欧盟(EU)成员国则返回 true
,country_flag
包含国家标志的emoji和Unicode,country_currency
包含国家货币的代码和符号,country_flag_url
返回一个公链到国家标志图像的SVG,可以在任何地方使用,以及 continent
包含大陆的代码和名称。
let r = ipinfo.lookup("8.8.8.8");
println!("{}: {}", "8.8.8.8", r.country_name) // United States
println!("{}: {:?}", "8.8.8.8", r.is_eu) // Some(false)
println!("{}: {:?}", "8.8.8.8", r.country_flag) // Some(CountryFlag { emoji: "🇺🇸", unicode: "U+1F1FA U+1F1F8" })
println!("{}: {:?}", "8.8.8.8", r.country_flag_url) // Some(https://cdn.ipinfo.io/static/images/countries-flags/US.svg)
println!("{}: {:?}", "8.8.8.8", r.country_currency) // Some(CountryCurrency { code: "USD", symbol: "$" })
println!("{}: {:?}", "8.8.8.8", r.continent) // Some(Continent { code: "NA", name: "North America" })
可以在创建 IPinfo
客户端时设置 default_countries
、default_eu
、default_country_flags
、default_currencies
和 default_continents
来返回其他语言的国家名称,更改欧盟国家以及更改标志emoji或unicode。
let countries = {
let json_data = r#"
{
"US": "United States"
}
"#;
serde_json::from_str(json_data).expect("error parsing user-defined JSON!")
};
let config = IpInfoConfig {
default_countries: countries,
..Default::default()
};
其他库
有许多官方的IPinfo客户端库可供多种语言使用,包括PHP、Go、Java、Ruby,以及Django、Rails和Laravel等许多流行框架。还有许多第三方库和API集成可用。
贡献
想到你想看到的某些内容?您可以访问问题跟踪器以查看它是否已被报告或提出,如果没有,请随时创建问题或功能请求。准备好开始贡献了吗?贡献指南 是一个不错的起点。如果您有任何问题,请随时提问。
关于IPinfo
成立于2013年,IPinfo以提供最可靠、最准确和最深入的IP地址数据来源而自豪。我们处理数以兆字节的数据来产生我们定制的IP地理定位、公司、运营商、VPN检测、反向IP、托管域和IP类型数据集。我们的API每月处理超过400亿次请求,为10万家企业和开发者提供服务。
依赖项
~7-19MB
~282K SLoC