最近广电偷跑放号,写了个小东西爬号码库
渣IT总是404,所以有点错误处理
import fetch from "node-fetch" import Queue from "queue-promise" import fs from "fs" import https from "https" const httpsAgent = new https.Agent({ rejectUnauthorized: false, }) let list = JSON.parse(fs.readFileSync('city.json')).data.regionalList let l = [] Array.from(list).map(item => { // if (item.areaByname !== '浙江省') return l.push(item.areaCode) for (const i of item.children) l.push(i.areaCode + '/' + i.areaByname) }) console.log(l) const queue = new Queue({ concurrent: 50, interval: 100 }) const result = [] function ff(region, key) { console.log(region, key) region = region.split('/')[0] return fetch("https://cbn5g.10099.com.cn/large/api/largescreen/qryNumber", { "headers": { "accept": "*/*", "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5", "cache-control": "no-cache", "content-type": "application/json", "pragma": "no-cache", "Referer": "https://cbn5g.10099.com.cn/h5-screen/?channel=", "Referrer-Policy": "strict-origin-when-cross-origin" }, "body": `{\"regionId\":\"${region}\",\"fuzzyTag\":\"0\",\"fuzzyKey\":\"${key}\",\"currentPage\":\"1\",\"pageSize\":\"100\",\"beautifulTag\":\"1\"}`, "method": "POST", agent: httpsAgent, }) } let ket = '0000,1111,2222,3333,4444,5555,6666,7777,8888,9999,2333,1234,2345,3456,4567,5678,6789,7890,23333,' let ket0 = '1920000,1921111,1922222,1923333,1924444,1925555,1926666,1927777,1928888,1929999,' let ket1 = '00000,11111,22222,33333,44444,55555,66666,77777,88888,99999,23333,12345,23456,34567,45678,56789,67890,233333,' let ket2 = '000011,000022,000033,000044,000055,000066,000077,000088,000099,001100,001111,001122,001133,001144,001155,001166,001177,001188,001199,002200,' l.map(item => { queue.enqueue(async () => { let aa = true do { await new Promise(resolve => { setTimeout(() => { resolve() }, 500) }) await ff(item, ket0).then(res => { console.log(res.status) if (res.status === 200) { return res.json() } return res.text() }).then(res => { console.log(res) if (res.timestamp) { aa = false if (parseInt(res.data.totalCount) > 0) { console.log(res.data) result.push([item, res.data]) } } }).catch((e) => { console.log(e) }) } while (aa) fs.writeFileSync('./result.json', JSON.stringify(result)) }) })