Гобелен - кликните для возврата на главную
Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.
Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.
Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.
На очередном конкурсе танцев, школьница отлично выступила.
Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.
Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.
Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!
manifest.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
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);
}
}
Вы так же можете прочитать следующие статьи: