const arrow = async (proxy) => {
return await new Promise(function(resolve, reject) {
var agent = new HttpsProxyAgent('http://'+proxy);
var proxyRequest = request.defaults({
agent: agent,
timeout: 5000,
headers: {
'user-agent': 'xxxxx'
}
});
proxyRequest.get("xxxx", async function (error, response, body) {
if(!error) {
if(response.body.includes("Your file is ready")) {
resolve(body)
}
}
});
});
}
const getData = async (data) => {
return new Promise( function(resolve, reject) {
for (let curProxy in data) {
let content = await arrow(curProxy);
if(content.includes("Your file is ready")) {
return resolve(content);
}
}
});
}
(async () => {
let proxies = fs.readFileSync("proxies.txt", {encoding:'utf8', flag:'r'}).split(/\r?\n/)
const subContent = await getData(proxies)
console.log(subContent)
})()Bunu dener misin?
Muhtemelen data.forEach içinde çağırdığın fonksiyon async olduğu için forEach data içindeki bütün itemlar için aynı anda arrow fonksiyonunu çağırıyordu. Debug etme şansım olmadı ama çalışması gerekiyor.
Eğer amacın teker teker denemesi değil, hepsini aynı anda çalıştırması ve bir tane geçerli proxy bulduğunda diğerlerini iptal etmesiyse farklı bir metod önereceğim.
proxyleri test eden bir yöntem denedim ancak garip bir şekilde farklı projede çalışmıyordu. bu method garanti ancak döngüyü kırmam gerekiyor. kodunuzu da denedim ancak çalışmadı. istek gönderdiğim site 24 saat için sadece 20 request isteği izni veriyor döngü kırılmazsa tüm proxylerde 1 tane request gitmiş olacak bu yüzden bu kadar uğraşıyorum.