WIpProxy

WIpProxy

new WIpProxy(optopt) → {Object}

Description:
  • 抓取代理伺服器

Source:
Example
import _ from 'lodash-es'
import wip from './src/WIpProxy.mjs'

let wo = wip({
    // tar: `https://www.google.com`,
    withServer: true,
    serverPort: 9000,
    serverCorsOrigins: ['*'],
})
wo.on('getRawProxies', (prxsRaw) => {
    console.log(`已抓取公開代理共 ${_.size(prxsRaw)} 個...`)
})
wo.on('add', (p, proxies) => {
    // console.log('新加入代理', { host: p.host, port: p.port }, _.map(proxies, 'proxy'))
})
wo.on('delete', (p, proxies) => {
    // console.log('刪除代理', { host: p.host, port: p.port }, _.map(proxies, 'proxy'))
})
wo.on('change', (proxies) => {
    // console.log(`有效代理`, _.map(proxies, 'proxy'))
    console.log(`已檢測有效代理共 ${_.size(proxies)} 個...`)
})

//browser view: http://localhost:9000/getProxies
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
src String <optional>
'https://api.proxyscrape.com/v2/?request=displayproxies&protocol=http&timeout=5000&anonymity=all'

輸入取得代理伺服器API字串,預設'https://api.proxyscrape.com/v2/?request=displayproxies&protocol=http&timeout=5000&anonymity=all'

tar String <optional>
'https://httpbin.org/ip'

輸入檢測目標網址字串,預設'https://httpbin.org/ip'

timeGetProxies Integer <optional>
30*1000

輸入輪循抓取代理伺服器時間間隔整數,單位ms,預設30*1000

timeTestProxies Integer <optional>
60*1000

輸入輪循測試代理伺服器時間間隔整數,單位ms,預設60*1000

anonymityCheck Boolean <optional>
true

輸入是否對代理做匿名性檢測布林值,開啟時會先查詢本機真實公網IP(依序嘗試httpbin.org、ipify、checkip.amazonaws.com、icanhazip.com),再透過代理打https://httpbin.org/get驗證目標端所見之origin與X-Forwarded-For、X-Real-IP、Forwarded等標頭皆不含本機真實IP,且不帶Via、Proxy-Connection等暴露代理存在之標頭;若本機真實IP查詢全部失敗則視為無法驗證,該回合所有代理皆不放行(fail-closed),預設true

anonymityCheckRepeats Integer <optional>
5

輸入匿名性檢測重複次數整數,各次以獨立連線送出並於時間上分散(間隔anonymityCheckInterval),用以偵測負載平衡型代理呈時間窗之機率性洩漏,任一次洩漏即判定失敗,預設5

anonymityCheckInterval Integer <optional>
2000

輸入匿名性檢測各次之間隔時間整數,單位ms,預設2000

withServer Boolean <optional>
false

輸入是否創建供數據供給伺服器布林值,預設false

serverPort Integer <optional>
8080

輸入創建伺服器所用port整數,預設8080

serverApiName String <optional>
'getProxies'

輸入供給數據API名稱字串,預設'getProxies'

serverCorsOrigins Array <optional>
['*']

輸入允許跨域網域陣列,若給予['']代表允許全部,預設['']

Returns:

回傳事件物件,提供函數getProxies(等待至有有效代理)與getProxiesOnce(抓取並檢測一回合後回傳當前有效代理,可能為空陣列),可監聽事件getRawProxies、add、delete、change

Type
Object