auto-captcha-solver
Version:
Automatically detect and solve various captcha types in Playwright & Puppeteer with 2Captcha/CapMonster Cloud integration
52 lines • 2.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProxyList = getProxyList;
exports.getRandomProxy = getRandomProxy;
const axios_1 = __importDefault(require("axios"));
async function getProxyList(webshareApiKey) {
try {
// Step 1: Get the proxy_list_download_token
const configResponse = await axios_1.default.get('https://proxy.webshare.io/api/v2/proxy/config/', {
headers: { Authorization: `Token ${webshareApiKey}` }
});
const downloadToken = configResponse.data.proxy_list_download_token;
if (!downloadToken) {
throw new Error('Failed to retrieve proxy_list_download_token.');
}
// Step 2: Use the token to download the proxy list
const proxyListUrl = `https://proxy.webshare.io/api/v2/proxy/list/download/${downloadToken}/-/any/username/direct/-/`;
const proxyResponse = await axios_1.default.get(proxyListUrl);
// Transform the proxy list into an array of objects
const proxyList = proxyResponse.data
.split('\n')
.map((proxy) => {
const [ip, port, username, password] = proxy.split(':');
return {
address: ip,
port,
username,
password: password?.trim() // Removes any \r or extra spaces
};
})
.filter((proxy) => proxy.address); // Remove empty lines
return proxyList;
}
catch (error) {
console.error('Error fetching proxy list:', error.response ? error.response.data : error.message);
return [];
}
}
// Function to return a random proxy
async function getRandomProxy(webshareApiKey) {
const proxyList = await getProxyList(webshareApiKey);
if (proxyList.length === 0) {
console.error('No proxies available.');
return null;
}
const randomIndex = Math.floor(Math.random() * proxyList.length);
return proxyList[randomIndex];
}
//# sourceMappingURL=webshare-proxy.js.map