惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
C
Check Point Blog
博客园 - 司徒正美
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Хостинг сервера в Google Colab без ngrok и cloudflared
Ferraro · 2026-04-30 · via Все публикации подряд на Хабре

Зачем это нужно

Когда нужно получить доступ к серверу, запущенному в Colab, стандартное решение — внешние туннели. Но у популярных инструментов есть проблемы:

ngrok — TCP-эндпоинты теперь требуют привязки банковской карты. Формально бесплатно, но карту давай.

cloudflared — периодические таймауты при работе с Colab, плюс каждый перезапуск ноутбука генерирует новый случайный субдомен.

При этом в Colab есть встроенный механизм для проксирования портов, который большинство игнорирует.


Как работает proxyPort

Colab предоставляет функцию google.colab.output.eval_js, которая позволяет получить публичный URL для любого локального порта:

from google.colab.output import eval_js
url = eval_js("google.colab.kernel.proxyPort(8000)")
print(url)

На выходе — URL вида https://{port}-{instance-id}.{region}.prod.colab.dev. Это не туннель, а встроенный прокси самого Colab.


Проблема: просто так не достучаться

Если попробовать сделать запрос по этому URL через requests — ничего не выйдет. Colab защищает доступ к порту через аутентификацию на основе куки.

Нужный куки называется colab-runtime-proxy-token . Получить его можно только из браузерной сессии с активным Colab:

  1. Открыть URL в браузере

  2. Открыть DevTools → Application → Cookies

  3. Найти colab-runtime-proxy-token


Решение: передаём токен в запросах

Имея токен, можно обращаться к серверу программно из любого места:

import requests

url = "https://{port}-{instance-id}.{region}.prod.colab.dev/endpoint"
cookies = {"colab-runtime-proxy-token": "ВАШ_ТОКЕН"}

response = requests.get(url, cookies=cookies)

Полный пример

В Colab — запускаем сервер:

from fastapi import FastAPI
import uvicorn
from google.colab.output import eval_js
import threading

app = FastAPI()

@app.get("/ping")
def ping():
    return {"status": "ok"}

url = eval_js("google.colab.kernel.proxyPort(8000)")
print(f"URL: {url}")

threading.Thread(target=lambda: uvicorn.run(app, host="0.0.0.0", port=8000)).start()

Или

url = eval_js("google.colab.kernel.proxyPort(8000)")
print(f"URL: {url}")

from fastapi import FastAPI
import uvicorn
from google.colab.output import eval_js
import threading

app = FastAPI()

@app.get("/ping")
def ping():
    return {"status": "ok"}

uvicorn.run(app, host="0.0.0.0", port=8000)

Снаружи — делаем запрос:

import requests

url = "https://{port}-{instance-id}.{region}.prod.colab.dev/ping"
cookies = {"colab-runtime-proxy-token": "ВАШ_ТОКЕН"}

print(requests.get(url, cookies=cookies).json())
# {'status': 'ok'}

Ограничения

  • Сервер живёт пока Colab не отключит runtime (до 12 часов на бесплатном плане)

  • URL меняется при каждом перезапуске ноутбука