Я нашёл решение.
Что было:
1. Блокировка с личного пк Win 10.
Заходил с ПК расположенного в РФ и ловил страницу блокировки. Пробовал различные VPN с комбинациями протоколов и локациями (vless, vmess, shadowsocks, WG). Срабатывал только один протокол EuroHub (Нидерланды), страница открывалась но битая: не прогружалась история чатов и после певрого же ответа от ИИ, всё ломалось.
2. Блокировка по API с немецкого VPS.
Делал запрос curl и нативными средствами n8n. Получал ошибку 400 - что не тот precondition и регион пользователя не алё.
Что сделал для первой проблемы:
Со включенным VPN, проверил себя по нескольким сайтам, чтобы найти утечки и оценить качество арендуемого IP:
https://browserleaks.com/webrtc
https://ipleak.net
https://dnsleaktest.com
https://test-ipv6.com
проверил таймзону на VPS, что установлена Германия
проверил что ipv6 отключен
Так как я в этом ничего не понимаю, скормил данные в GPT и спросил что он видит, и что значат эти данные. Получил ответ, что зияющих дыр по тестам нет, но ASN который предоставляет IP может маркироваться как подозрительный, т.к. массово эти IP продает. Но никаких серьезных утечек, мол, не обнаружено.
Почистил точечно куки в браузере - удалил именно gemini сайт, а не весь гугл. Перезапустил браузер и вуаля! Всё заработало. Так решил блокировку с win 10.
Возможно, у вас тоже сработает. Если нет - тестируйте и общайтесь с ИИ, чтобы найти и закрыть утечки.
Для проблемы с API:
Причина была в том, что нигде нельзя было подмазаться к гуглу.
Единственные 2 способа нашел - это либо на платный tier 1 перейти, тогда мол одобрямс происходит, т.к. политика по Европейским странам жесткая, либо обернуть запросы через cloudflare. Это бесплатно и быстро.
Спросил Ии как это сделать, создал на cloudflare воркера за 5 мин - простой код, который оборачивает все запросы в Google с моего VPS и прикрывается авторитетом cloudflare.
Там есть несколько лишних строк - я тестировал вариант прикрыться нодой openai т.к. интерфейс n8n имеет некоторые ограничения. Но и без них работать будет ок.
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
let targetPath = url.pathname;
// 1. Если запрос идет от ноды OpenAI (путь начинается с /v1)
// Мапим его на специфический эндпоинт Google
if (url.pathname.startsWith('/v1/')) {
targetPath = '/v1beta/openai' + url.pathname;
}
// Формируем финальный URL
const targetUrl = 'https://generativelanguage.googleapis.com' + targetPath + url.search;
const newHeaders = new Headers(request.headers);
newHeaders.set('host', 'generativelanguage.googleapis.com');
newHeaders.delete('x-forwarded-for');
newHeaders.delete('x-real-ip');
// Передаем авторизацию как Bearer (для OpenAI-ноды) или через заголовок Google
if (newHeaders.has('Authorization')) {
const auth = newHeaders.get('Authorization');
if (auth.startsWith('Bearer ')) {
const apiKey = auth.replace('Bearer ', '');
newHeaders.set('x-goog-api-key', apiKey);
}
}
const modifiedRequest = new Request(targetUrl, {
method: request.method,
headers: newHeaders,
body: request.body,
redirect: 'follow'
});
try {
const response = await fetch(modifiedRequest);
return response;
} catch (e) {
return new Response('Proxy Error: ' + e.message, { status: 500 });
}
}
};
Короче адрес этого воркера вставил в Google credentials в n8n вместо "
https://generativelanguage.googleapis.com" , вставил тот же API key что был ранее сгенерирован в Ai Google studio и всё заработало.
Если вы напрямую http запросы делаете, то так же просто меняете endpoint URL и всё. Многие кто в Европе с этими политическими анальными ограничениями столкнулись, так же выходили из ситуации.