Как блокировка facebook, instagram и twitter влияет на работу сайтов в РФ

Мы начали сталкиваться с запросами от клиентов о том, что некоторые страницы сайтов или даже целые сайты стали грузиться долго. Сначала было не до конца понятно что происходит и выглядело как “что-то на стороне PHP долго отрабатывает, а в MySQL Sleep висит” и “ну может цикл неоптимизированный какой-то”. После того, как мы провели глубокое профилирование работы PHP на таких страницах – увидели что долго выполняется функция curl_exec (эта функция является оберткой над cURL в PHP и используется для обращений к внешним сервисам, например, по API).



Ну и конечно же запросы к facebook блокируются, да :frowning: и аналогичная ситуация наблюдается и с API Instagram и API Twitter, но через раз.

[root@REDACTED ~]# curl -v 'https://graph.facebook.com/'
* About to connect() to graph.facebook.com port 443 (#0)
*   Trying 157.240.205.1...
* Connection timed out
*   Trying 2a03:2880:f013:0:face:b00c:0:2...
* Failed to connect to 2a03:2880:f013:0:face:b00c:0:2: Network is unreachable
* Failed connect to graph.facebook.com:443; Network is unreachable
* Closing connection 0
curl: (7) Failed to connect to 2a03:2880:f013:0:face:b00c:0:2: Network is unreachable

Что делать прямо здесь и сейчас?

  1. Выключать модули, которые обращаются к graph.facebook.com и другим. Я прекрасно понимаю что некоторые интеграции очень нужны и критичны для бизнес-логикм и аналитики, но тут нужно понять что важнее “работа быстрая сайта” или “функциональность, которая и так отвалилась”.
  2. Составить список модулей с обращениями к третьесторонним сервисам (особенно зарубежным) и держать этот список “под рукой” и на случай новых проблем выключать модули и проверять.

Что делать дальше, елси интеграции нужны?

  • Подумать над проксями и VPN для таких сервисов, чтобы заворачивать трафик в обход блокировок прямо на сервере, но для жтого нужен список что нужно обходить
  • В модулях и интеграциях сделать интеграции с прокси-сервисами

Да, кто-то скажет – ну и ладно, на зарубежных хостерах у меня работает, но помните про Федеральный закон “О персональных данных” от 27.07.2006 N 152-ФЗ и другие инциденты с зарубежными хостерами.


Ссылка наполную статью с размышлениями

4 лайка

Кстати, да, блокировка сейчас не у всех провайдеров и хостеров наблюдается, потому что это зависит от того как и куда они подключены, кто у них является точкой обмена трафика и какой провайдер “над ними”.

Ростелеком и MSK-IX (крупнейшая российская точка обмена интернет-трафиком, оператор платформ для масштабирования сетей и сервисов в Интернете), например, очень хорошо взялись за трафик сейчас https://bgp.he.net/search?search[search]=Internet+Exchange+"MSK-IX&commit=Search , а вот когда остальные возьмутся – вопрос времени.

Обновляющийся пост

Погрепал немного по модулям и ядру, с проблемами могут сталкиваться пользователи модулей (буду публиковать только ID модулей)

graph.facebook.com и api.facebook.com

  • hybrid_auth
  • facebook_connect
  • rf_facebook_conversions
  • cartbooster_facebook_messenger
  • sd_fb_conversion_api
  • sd_instagram
  • social_share
  • ath_instagram_2
  • facebook_wall

===
Если нужно добавить или поискать другой домен – пишите дальше в тред или мне в личку, буду проверять и пополнять.

1 лайк

Вижу в коде страницы Facebook Pixel, не пойму откуда он берётся. Модуль отключил и даже удалил, все блоки проверил - нет кода… А на сайте есть.

Иногда добавляется в шапку страницы типа вот так https://gyazo.com/983ea0f9d657b520bddec16809557740, но это другой метод подключения через JS. Его, кстати, тоже надо посмотреть будет, скорее это будет JS поток тормозить.

UPD.

1 лайк

Кстаааааати, можно запросы что прозодят через ядровые Http::GET, Http::POST спроксировать через Settings: General: Proxy server for outgoing connections, но тут если что, будьте аккуратны – что-то может и отвалиться, если где-то есть проверка IP (вайтлист).

Да спасибо, там тоже проверил - нет!
Как же понять по коду страницы, откуда грузится? Есть метод?