2个不稳定版本

0.2.0 2021年4月7日
0.1.0 2020年12月13日

#43 in #public

Unlicense

51KB
966

PbO

氧化铅是围绕pubproxy.com公共代理API的包装器。

氧化铅旨在在尽可能使常规使用舒适的同时,使API使用错误变得不可能。

无密钥API限制

每日限制

在编写此文档时,没有API密钥,pubproxy API限制用户每次请求5个代理,每天50次请求。每次请求的最大代理数始终被使用,以最小化速率限制,并在请求限制内获取尽可能多的代理,这意味着您每天可以获取250个代理,而无需API密钥。

速率限制

没有API密钥,pubproxy将用户限制为每秒一个请求,因此Fetcher将尝试确保没有API密钥时,最多每秒只进行一次请求。这包括在不同线程之间同步:然而,由于从同一IP运行多个程序可能会导致速率限制,因此仍然可能存在问题。速率限制非常严重(可能会拒绝请求数小时),因此应尽可能避免。

快速入门

use iso_country::Country;
use lead_oxide::{
    errors::ApiError,
    fetcher::Fetcher,
    opts::Opts,
    types::{Countries, Level, Protocol, TimeToConnect},
};

use std::{convert::TryFrom, time::Duration};

fn main() -> Result<(), ApiError> {
    // Fetcher for SOCKS5 proxies located in the US and Canada that support POST requests
    let mut socks_fetcher = Fetcher::new(
        Opts::builder()
            .protocol(Protocol::Socks5)
            .countries(Countries::allow().countries(&[Country::US, Country::CA]))
            .post(true)
            .build(),
    );

    // Fetcher for Elite HTTPS proxies that connected in 15 seconds or less
    let mut https_fetcher = Fetcher::new(
        Opts::builder()
            .protocol(Protocol::Http)
            .https(true)
            .level(Level::Elite)
            .time_to_connect(TimeToConnect::try_from(Duration::from_secs(15)).unwrap())
            .build(),
    );

    // Get one SOCKS proxy and 10 HTTPS proxies
    let socks_proxy = &socks_fetcher.try_get(1)?[0];
    let https_proxies = https_fetcher.try_get(10)?;

    println!("SOCKS proxy: {:#?}", socks_proxy);
    println!("HTTPS proxies {:#?}", https_proxies);

    Ok(())
}

依赖项

~3.5–4.5MB
~115K SLoC