Смена прокси в FindProxyForURL по запросуJavascript

Форум по Javascript
Ответить
Anonymous
 Смена прокси в FindProxyForURL по запросу

Сообщение Anonymous »

У нас есть проект веб-скрейпера, который использует разные прокси для каждого веб-сайта. В настоящее время мы используем этот код для возврата одного и того же прокси-сервера для каждого веб-сайта, но теперь нам нужно указать отдельный URL-адрес прокси-сервера для каждого из них:

Код: Выделить всё

var config = {
mode: "pac_script",
pacScript: {
data: "function FindProxyForURL(url, host) {\n" +
"    let domainList = ['site1.com', 'site2.com',  'site3.com'];\n" +
"      if (host === 'www.google.com' || host === 'analytics.google.com')" +
"           return 'PROXY pr.oxylabs.io:7777';" +
"    for (let i = 0; i < domainList.length; i++) {\n" +
"\n" +
"        if (dnsDomainIs(host, domainList[i])) {\n" +
"            return 'PROXY pr.oxylabs.io:7777';\n" +
"        }\n" +
"    }\n" +
"    if (dnsDomainIs(host, 'analytics.google.com') || dnsDomainIs(host, 'doubleclick.net')) {" +
"       return 'PROXY 127.0.0.1:65500';\n" +
"}\n" +
"   return 'DIRECT';\n" +
"}"
}
};
Эта конфигурация загружается в настройки браузера через:

Код: Выделить всё

chrome.proxy.settings.set({value: config, scope: "regular"}, function () {});
и учетные данные были предоставлены через:

Код: Выделить всё

function callbackFn(details) {
let username = "custom-username-" + makeid(6);
return {
authCredentials: {
username: username,
password: "our_password"
}
};
}
а затем мы отслеживали, сколько запросов было сделано к каждому домену через:

Код: Выделить всё

chrome.webRequest.onBeforeRequest.addListener(
function (details) {
if (details.method === "GET" && details.type === "main_frame") {
}
},
{urls: [""]},
);
Вопрос в том, как мы можем назначить разные прокси для каждого домена, когда, например, мы передаем в URL-адрес магическую строку (например, ___CHANGE___PROXY___FOR___DOMAIN___ZZZ) или что-то похожее на указать, какой домен нуждается в смене прокси?
Моя идея заключалась в том, чтобы создать функцию, которая возвращает содержимое для FindProxyForURL, которая генерирует для него JavaScript, а затем помещает ее в config.pacScript.data и вызовите chrome.proxy.settings.set({value: config,scope: "regular"}, function () { }) ...

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-request
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»