← Назад в базу знаний

Tumblr через IPv6 прокси: ведение блогов и обход ограничений

Tumblr через IPv6 прокси: ведение блогов и обход ограничений

Tumblr — старый зверь. Запущен в 2007, пережил покупку Yahoo, цензуру 2018 года и до сих пор жив. Но для пользователей из России и СНГ доступ к нему закрыт с 2022 года. Роскомнадзор заблокировал платформу за "призывы к экстремизму". Формально — да, контента там хватает. Практически — пострадали обычные блогеры.

IPv6 прокси решают проблему доступа. Но есть нюансы.

Почему IPv6, а не обычные прокси

Провайдеры блокируют по DNS и IP-адресам. IPv4-адреса заканчиваются, их переиспользуют, базы блокировок пополняются быстро. IPv6-пространство огромное. Подсеть /64 содержит 18 квинтиллионов адресов. Заблокировать их все физически невозможно.

Пример: у lexic.ml пул адресов в нескольких /48 подсетях. Это миллиарды адресов. РКН может блокировать неделями, а адреса меняются автоматически.

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

Tumblr использует HTTPS. Для проксирования нужен CONNECT-туннель или просто HTTP-прокси с поддержкой HTTPS. IPv6-прокси принимает запрос, открывает соединение к tumblr.com через свой IPv6-адрес, возвращает данные.

Ключевой момент: Tumblr отдаёт контент через CDN. Основной домен — tumblr.com, но медиафайлы раздаются с o.twimg.com и других поддоменов. Прокси должен корректно обрабатывать все запросы.

Настройка прокси

Берём стандартный HTTP-прокси на Python:

```python

import socket

import threading

import select

def handle_client(client_sock):

try:

request = client_sock.recv(4096)

if not request:

return

Parse CONNECT or GET request

first_line = request.split(b'\n')[0]

method = first_line.split(b' ')[0]

if method == b'CONNECT':

Extract host:port

host_port = first_line.split(b' ')[1].decode()

host, port = host_port.split(':')

Connect via IPv6

remote_sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)

remote_sock.settimeout(10)

Resolve domain to IPv6

addrinfo = socket.getaddrinfo(host, int(port), socket.AF_INET6)

remote_sock.connect(addrinfo[0][4])

client_sock.send(b'HTTP/1.1 200 Connection Established\r\n\r\n')

Forward data

while True:

rlist, _, _ = select.select([client_sock, remote_sock], [], [], 30)

if client_sock in rlist:

data = client_sock.recv(4096)

if not data:

break

remote_sock.sendall(data)

if remote_sock in rlist:

data = remote_sock.recv(4096)

if not data:

break

client_sock.sendall(data)

else:

Simple HTTP proxy logic

pass

except Exception as e:

print(f"Error: {e}")

finally:

client_sock.close()

def main():

server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)

server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

server.bind(('::', 8888))

server.listen(100)

print("Proxy listening on [::]:8888")

while True:

client_sock, addr = server.accept()

thread = threading.Thread(target=handle_client, args=(client_sock,))

thread.start()

if __name__ == '__main__':

main()

```

Это примитивный пример. Для реальной работы нужен обработчик ошибок, таймауты, поддержка HTTP/2. Но принцип понятен.

Настройка браузера

Firefox или Chrome с расширением FoxyProxy. Указываем адрес прокси: `[2606:4700::1]:8888`. В квадратных скобках — потому что IPv6-адрес содержит двоеточия.

Для curl:

```bash

curl -x "http://[2606:4700::1]:8888" https://tumblr.com/api/hello

```

Ведение блога через API

Tumblr имеет REST API. Версия 2, OAuth 1.0a. Создаём приложение на tumblr.com/oauth/apps. Получаем ключи.

```python

import requests

from requests_oauthlib import OAuth1

Credentials from Tumblr app

consumer_key = 'your_consumer_key'

consumer_secret = 'your_consumer_secret'

token = 'your_oauth_token'

token_secret = 'your_oauth_token_secret'

Proxy configuration

proxies = {

'http': 'http://[2606:4700::1]:8888',

'https': 'http://[2606:4700::1]:8888'

}

auth = OAuth1(consumer_key, consumer_secret, token, token_secret)

Create a text post

data = {

'type': 'text',

'title': 'Test post via IPv6 proxy',

'body': 'Hello from the future of networking!'

}

response = requests.post(

'https://api.tumblr.com/v2/blog/yourblog.tumblr.com/post',

auth=auth,

data=data,

proxies=proxies

)

print(response.status_code)

print(response.json())

```

Ответ 201 — пост создан. 401 — проблемы с OAuth. 403 — бан по IP.

Кейс: бан по контенту

Пример: блогер вёл дневник о ментальном здоровье. После блокировки Tumblr в РФ перешёл на прокси. Через месяц получил бан аккаунта за "спам".

Причина: Tumblr фиксирует вход с разных IP-адресов. IPv6-пул меняется каждые 10 минут. Система антифрода решила, что аккаунт взломан.

Решение: привязка прокси к конкретному аккаунту. Покупка выделенного IPv6-адреса. Статичный адрес — статичная репутация. Стоит примерно \$2-3 в месяц, зато аккаунт живёт.

Кейс: скорость загрузки

Пользователь жаловался на медленную загрузку изображений. Проверили: дашборд открывается за 2 секунды, но картинки грузятся по 10-15 секунд.

Причина: CDN Tumblr определяет геолокацию по IP прокси. Если IP из Нидерландов, медиафайлы отдаются с европейских серверов. Задержка до них — 30-40 мс. Но прокси с IPv6 в подсети, которая раньше принадлежала американскому хостеру — CDN думает, что пользователь в США, и гонит трафик через Атлантику. Пинг 150 мс, скорость падает.

Решение: выбор прокси с географией, близкой к целевой аудитории. Для русскоязычных блогов — европейские подсети. Для англоязычных — американские.

Кейс: блокировка API

Разработчик делал приложение для автоматического постинга. Работало через прокси. Через неделю — HTTP 429 Too Many Requests.

Причина: Tumblr ограничивает число запросов с одного IP. Стандартный лимит — 250 запросов в час. IPv6-пул с автоматической ротацией адресов обходил лимит, но система обнаружила аномалию — сотни запросов с разных адресов за короткое время. Флаг на аккаунт.

Решение: ротация не чаще раза в 5 минут. Плюс кеширование OAuth-токенов. Запросы к API не чаще одного в 15 секунд. Лимиты Tumblr жёсткие, но адекватные для ручного ведения блога.

Настройка nginx как IPv6-прокси

Отдельный случай — проксирование на уровне сервера. Если блог ведётся с VPS, а не с домашнего компьютера.

```nginx

server {

listen [::]:8080;

resolver 8.8.8.8;

location / {

proxy_pass https://tumblr.com\$request_uri;

proxy_set_header Host tumblr.com;

proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;

proxy_ssl_server_name on;

proxy_ssl_name tumblr.com;

proxy_redirect https://tumblr.com/ /;

Buffer settings for media

proxy_buffering on;

proxy_buffer_size 8k;

proxy_buffers 8 32k;

proxy_max_temp_file_size 1024m;

}

}

```

Проблема: Tumblr отдаёт редиректы на api.tumblr.com, assets.tumblr.com. Все эти домены нужно тоже проксировать. Иначе получите бесконечную цепочку редиректов.

Автоматическая смена адресов

IPv6-прокси хороши тем, что адреса в подсети можно менять без переподключения. Скрипт на Python:

```python

import subprocess

import time

import random

def change_ipv6():

Get current address

result = subprocess.run(['ip', '-6', 'addr', 'show', 'dev', 'eth0'],

capture_output=True, text=True)

Generate new suffix

new_suffix = f"{random.randint(0, 65535):04x}:{random.randint(0, 65535):04x}"

Remove old address

subprocess.run(['ip', '-6', 'addr', 'del', f'2606:4700::1/64', 'dev', 'eth0'])

Add new address

subprocess.run(['ip', '-6', 'addr', 'add', f'2606:4700::{new_suffix}/64', 'dev', 'eth0'])

print(f"IP changed to 2606:4700::{new_suffix}")

while True:

change_ipv6()

time.sleep(600) # Every 10 minutes

```

Работает не везде. Хостер должен разрешать смену адресов. Обычно это VPS с выделенной IPv6-подсетью. Дешёвые shared-хостинги такого не дают.

Безопасность и приватность

Tumblr хранит метаданные. IP-адреса, с которых вы входили, фиксируются. Даже если вы используете прокси, Tumblr знает ваш User-Agent, куки, паттерны поведения.

Для полной анонимности нужно менять и User-Agent, и куки. И не входить в Google-аккаунт с того же браузера. Иначе Google свяжет ваш реальный IP с прокси через рекламные трекеры.

Паранойя? Возможно. Но Tumblr после 2018 года активно сотрудничает с правообладателями и властями. DMCA-запросы обрабатываются за 24 часа. Если постите контент, защищённый авторским правом — знайте, что ваш прокси-IP не спасёт. Tumblr выдаст все данные по официальному запросу.

Резюме

IPv6-прокси решают проблему доступа к Tumblr. Но не решают проблему репутации. Если аккаунт создан давно, с него постили с российского IP, потом резко — с нидерландского — это триггер для антифрода.

Лучшая стратегия: купить выделенный IPv6-адрес, настроить прокси только для Tumblr, не смешивать с другим трафиком. Дать аккаунту "прогреться" неделю-две, постить регулярно, не дёргать API почём зря.

И помните: Tumblr — это не только блог-платформа, но и социальная сеть. Посты без лайков, репостов и комментариев выглядят подозрительно. Алгоритмы продвижения видят активность. Пустой блог с прокси — быстрый путь к баннеру "This blog has been flagged for suspicious activity".

✔️Купить прокси