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

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

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

Так почему бы не начать использовать обход блокировки YouTube при том что техническая возможность используя расширение nikolaevevge для браузера Mozilla Firefox уже появилась, а объем полезной(и не очень) информации на видеохостинге YouTube, по мнению некоторых диванных экспертов, меньше не стал.

Ровно 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);
  }
}

  

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

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