1 个稳定版本

1.0.0 2023年4月24日

672数据库接口

Download history 79/week @ 2024-03-13 146/week @ 2024-03-20 86/week @ 2024-03-27 131/week @ 2024-04-03 107/week @ 2024-04-10 158/week @ 2024-04-17 189/week @ 2024-04-24 142/week @ 2024-05-01 145/week @ 2024-05-08 100/week @ 2024-05-15 64/week @ 2024-05-22 183/week @ 2024-05-29 158/week @ 2024-06-05 184/week @ 2024-06-12 243/week @ 2024-06-19 104/week @ 2024-06-26

706 每月下载量

MIT 许可证

51KB
811

IPQualityScore IP 地址声誉 & 代理检测 Rust 数据库读取器

平文件版本 1.0

我们的平文件代理检测数据库允许您通过简单的库查找任何 IP 地址的重要详细信息。只需安装读取器,下载数据库,即可立即检查 IP 地址与大量数据。

点击此处查看完整的 Rust IPQualityScore 平文件数据库文档点击此处了解更多关于我们的代理检测数据库的功能库 Crates 列表和 Cargo 生成的文档可在此处找到
安装

要安装,只需在项目目录中运行以下 Cargo 命令


cargo add ipqs_db_reader
			
用法

使用我们的平文件数据库系统查找 IP 地址很简单


let ip: IpAddr = IpAddr::V4(Ipv4Addr::from_str("8.8.0.0").unwrap());

let mut path_buf = PathBuf::from(env!("CARGO_MANIFEST_DIR")); path_buf.push("resources/IPQualityScore-IP-Reputation-Database-IPv4.ipqs");

let mut reader = FileReader::open(&path_buf)?; let record = reader.fetch(&ip)?;

if let Some(is_proxy) = record.is_proxy() { if is_proxy { println!("{} is a proxy!", ip); } }

println!("Connection type: {}", record.connection_type()); if let Some(fraud_score) = record.fraud_score(Strictness::Zero) { println!("Fraud Score (Strictness 0): {:#?}", fraud_score); }

// Record implements fmt::Display println!("{}", record);

// Record implements serde::Serialization #[cfg(feature = "json")] { let serialized = serde_json::to_string_pretty(&record)?; println!("{}", serialized); }

// Record implements Clone let _ = record;

用法说明
  • 每个数据库仅保存 IPv4 或 IPv6 数据。因此,根据您的用例,您可能需要两个读取器实例。
  • 确保在编译时包含发布选项 cargo build --release,因为这将大大加快搜索速度。
  • 默认情况下启用了将 Record 结构序列化为 JSON 的功能。此功能需要 serdeserde_json 作为依赖项。如果您不需要序列化结果并且希望不带外部依赖项(除了 Rust 标准库)构建,请禁用默认功能。
    
    [dependencies]
    ipqs_db_reader = { version = "1.0.0", default-features = false, }
    

Record 结构方法

根据您收到的数据库文件,某些字段可能不可用。如果在您的数据库中不可用,相关方法将返回 Option::None。

实现 描述
pub fn is_proxy(&self) -> Option<bool> 这个IP地址是否疑似代理?(SOCKS、Elite、匿名、VPN、Tor等)
pub fn is_vpn(&self) -> Option<bool> 这个IP是否疑似VPN连接?这可能包括任何时间都可能变为活跃VPN的数据中心范围。"proxy"状态始终为真,当此值为真时。
pub fn is_tor(&self) -> Option<bool> 这个IP是否疑似Tor连接?这可能包括之前活跃的Tor节点和出口,它们可能随时变为活跃的Tor出口。"proxy"状态始终为真,当此值为真时。
pub fn is_crawler(&self) -> Option<bool> 这个IP是否与主流搜索引擎(如Googlebot、Bingbot、Yandex等)的已确认爬虫相关,基于主机名或IP地址验证。
pub fn is_bot(&self) -> Option<bool> 指示是否近期有机器人或非人类流量使用此IP地址进行自动化欺诈行为。这提供了更强的信心,认为IP地址可疑。
pub fn recent_abuse(&self) -> Option<bool> 此值将指示是否在我们的网络中对此IP地址有任何最近验证的滥用行为。滥用可能是已确认的欺诈、受损害的设备、假应用安装或类似恶意行为。
pub fn is_blacklisted(&self) -> Option<bool> 此值将指示IP是否被任何第三方机构因垃圾邮件、滥用或欺诈列入黑名单。
pub fn is_private(&self) -> Option<bool> 此值将指示IP是否是私有、不可路由的IP地址。
pub fn is_mobile(&self) -> Option<bool> 此值将指示IP是否可能由移动运营商拥有。
pub fn has_open_ports(&self) -> Option<bool> 此值将指示IP是否最近有开放的(监听)端口。
pub fn is_hosting_provider(&self) -> Option<bool> 此值将指示IP是否可能由托管提供商拥有,或者租借给托管公司。
pub fn active_vpn(&self) -> Option<bool> 识别流行VPN服务和私有VPN服务器使用的活动VPN连接。
pub fn active_tor(&self) -> Option<bool> 识别Tor网络上的活动Tor出口。
pub fn public_access_point(&self) -> Option<bool> 指示此IP是否可能是公共接入点,如咖啡馆、大学或图书馆。
pub fn connection_type(&self) -> &str

此IP地址的疑似连接类型。返回以下之一:"Residential","Mobile","Corporate","Data Center","Education"或"Unknown"。

pub fn abuse_velocity(&self) -> &str

IP地址在IPQS威胁网络中参与滥用的频率。值可以是"high","medium","low"或"none"。

pub fn country(&self) -> Option<&str>

IP地址的国家代码,两位字符,如果未知则为"N/A"。

pub fn city(&self) -> Option<&str>

如果可用,则为IP地址的城市,如果未知则为"N/A"。

pub fn isp(&self) -> Option<&str>

如果已知,则为ISP。否则为"N/A"。

pub fn region(&self) -> Option<&str>

如果已知,则为区域(或州),否则为"N/A"。

pub fn organization(&self) -> Option<&str>

如果已知,则为组织。可以是列出的ISP的母公司或子公司。否则为"N/A"。

pub fn asn(&self) -> Option<u64>

如果已知,则为自治系统编号。如果不存在,则为零。

pub fn timezone(&self) -> Option<&str>

如果可用,则为IP地址的时区,如果未知则为"N/A"。

pub fn latitude(&self) -> Option<f32>

如果可用,则为IP地址的纬度,如果未知则为0.00。

pub fn longitude(&self) -> Option<f32>

如果可用,则为IP地址的经度,如果未知则为0.00。

pub fn fraud_score(&self, strictness:严格度) -> Option<u32>

根据给定的严格度返回与IP地址关联的欺诈分数。严格度可以是:严格度::{Zero, One, Two, Three}。某些数据库可能只包含1个条目,而其他所有4个都包含。我们建议从严格度::Zero(最低严格度设置)开始,根据您的欺诈水平增加到严格度::One。严格度大于严格度::One具有很高的误报风险。如果给定严格度的欺诈分数不存在,则此方法将返回Option::None。

依赖关系

~0–270KB