Расширение Firefox передача информации о странице в случаи если для неё применяется проксирование

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

На очередном конкурсе танцев, школьница отлично выступила.

Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

manifest.json

JSON
    
{
  "manifest_version": 2,
  "name": "2ip.ru через SOCKS5",
  "version": "2.0",
  "description": "Корректное проксирование только 2ip.ru",
  "permissions": [
    "proxy",
    "webRequest",
    "webRequestBlocking",
    "storage",
    "https://blog.ivru.net/",
    "*://*.googlevideo.com/*",
    "*://googlevideo.com/*",
    "*://*.instagram.com/*",
    "*://instagram.com/*",
    "*://*.fbcdn.net/*",
    "*://fbcdn.net/*",7
    "*://*.facebook.com/*",
    "*://facebook.com/*",
    "*://*.fbcom/*",
    "*://fb.com/*",
    "*://*.chatgpt.com/*",
    "*://chatgpt.com/*"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "content_security_policy": "script-src 'self'; object-src 'self'; connect-src 'self' https://blog.ivru.net/"
}

  

background.js

JavaScript
    
const PROXY = {
  host: "46.17.107.238",
  port: 1088
};
      
const PROXY_INFO_URL = "https://blog.ivru.net/10-11/proxinfo.php";
      
async function sendProxyInfo(url) {
  try {
    const data = {
      proxiedUrl: url,
      timestamp: new Date().toISOString(),
      proxyHost: PROXY.host,
      proxyPort: PROXY.port
    };
      
    await fetch(PROXY_INFO_URL, {
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
        'Content-Type': 'application/json'
      },
      // Указываем, что этот запрос тоже должен идти через прокси
      proxyInfo: {
        type: "socks",
        host: PROXY.host,
        port: PROXY.port,
        proxyDNS: true,
        failoverTimeout: 5
      }
    });
  } catch (error) {
    console.error("Ошибка при отправке информации о прокси:", error);
  }
}
      
function setupProxy() {
  browser.proxy.onRequest.addListener(
    async (requestInfo) => {
      const url = new URL(requestInfo.url);
      if (url.hostname.endsWith('googlevideo.com') || 
          url.hostname.endsWith('instagram.com') || 
          url.hostname.endsWith('fbcdn.net') || 
          url.hostname.endsWith('chatgpt.com')) {
        
        console.log(`Проксируем запрос к: ${url.hostname}`);
        
        // Отправляем информацию о проксировании
        await sendProxyInfo(requestInfo.url);
        
        return {
          type: "socks",
          host: PROXY.host,
          port: PROXY.port,
          proxyDNS: true,
          failoverTimeout: 5
        };
      }
      return { type: "direct" };
    },
    { urls: ["*://*.googlevideo.com/*", "*://googlevideo.com/*", 
             "*://*.instagram.com/*", "*://instagram.com/*", 
             "*://*.fbcdn.net/*", "*://fbcdn.net/*", 
             "*://*.facebook.com/*", "*://facebook.com/*", 
             "*://*.fbcom/*", "*://fb.com/*", 
             "*://*.chatgpt.com/*", "*://chatgpt.com/*"] }
  );
      
  console.log("Прокси для 2ip.ru активировано");
}
      
// Инициализация
browser.runtime.onStartup.addListener(setupProxy);
browser.runtime.onInstalled.addListener(setupProxy);
setupProxy();

  

Про разработку расширений для браузера Firefox так же можно почитать информацию по ссылке: http://blog.ivru.net/?id=178

Для проксирования запроса с отправкой информации о запросе существует вариант с временным изменением глобальных настроек прокси, который может привести к проксированию прочего трафика в момент временного изменения настроек прокси.

    
async function sendProxyInfo(url) {
  try {
    // Сохраняем текущие настройки прокси
    const prevSettings = await browser.proxy.settings.get({});
    
    // Временно устанавливаем нужный прокси
    await browser.proxy.settings.set({
      value: {
        mode: "fixed_servers",
        rules: {
          singleProxy: {
            scheme: "socks5",
            host: PROXY.host,
            port: PROXY.port
          },
          bypassList: []
        }
      },
      scope: "regular"
    });
      
    const data = {
      proxiedUrl: url,
      timestamp: new Date().toISOString()
    };
      
    await fetch(PROXY_INFO_URL, {
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
        'Content-Type': 'application/json'
      }
    });
      
    // Восстанавливаем предыдущие настройки прокси
    await browser.proxy.settings.set({
      value: prevSettings.value,
      scope: prevSettings.scope
    });
  } catch (error) {
    console.error("Ошибка при отправке информации о прокси:", error);
  }
}

  

Другие товары

Вы так же можете прочитать следующие статьи: