Некоторые сайты заблокированы для oneboxing

У меня возникла проблема с превью onebox после обновления 4 мая. Не все гиперссылки успешно создают окно превью.

Однако все эти гиперссылки работали нормально на Meta до сегодняшнего дня, пока я наконец не обнаружил гиперссылку с похожей* проблемой на Meta.
*другой код ошибки

Пожалуйста, дайте совет. Спасибо за помощь.

https://medium.com/swlh/5-free-python-courses-for-beginners-to-learn-online-e1ca90687caf

1 лайк

Я попытался использовать Onebox для этой ссылки на моём форуме и получил тот же результат.
Я сразу заметил это, как только проверил ссылку. Она вернула два исключения. Из-за этого ссылка не может быть использована в Onebox. Именно поэтому вы/мы получили это сообщение в Onebox.

1 лайк

@jamie.wilson расследует проблемы с medium onebox, исправление уже готовится к выпуску

4 лайка

Да, похоже, это та же проблема, которая вызывает ошибку 500. Мы уже решили её, @jamie.wilson?

3 лайка

Ссылка, предоставленная @SkyLin, снова приводит к Oneboxing:

https://medium.com/swlh/5-free-python-courses-for-beginners-to-learn-online-e1ca90687caf

Кажется, Medium внесли некоторые изменения на своей стороне, которые выявили недостатки в том, как мы генерируем Oneboxes. Эти проблемы теперь устранены с нашей стороны и включены в основную ветку, что сделало Oneboxing в целом более надежным (и не только для Medium).

4 лайка

Эта проблема была решена после обновления. Большое спасибо!

Comparing bbb44698...a24b6daa · discourse/discourse · GitHub

Однако моя первоначальная проблема* всё ещё сохраняется. Есть ли какие-либо дополнительные действия, которые я могу предпринять, чтобы это исправить? Ещё раз спасибо.

*Onebox работает корректно на meta, но не работает на моём сайте для того же URL:

1 лайк

Я только что проверил все три ваши ссылки: одну для Medium и две для Udemy — на моём сайте и здесь, на Meta. Все три ссылки корректно отображаются в режиме Onebox и на моём сайте, и здесь, на Meta.

2 лайка

Спасибо за полезную информацию.

Я попробовал способ, описанный в теме Amazon onebox fails on my site, but works here, и получил код ответа 403 для Udemy. Я даже клонировал сайт из старой резервной копии, и проблема сохраняется. Не может ли причина быть в чём-то другом, например, в настройках?

Пожалуйста, дайте совет. Спасибо за помощь.

root@localhost:~# curl https://www.udemy.com/course/certified-kubernetes-application-developer/ -o deleteme.html --verbose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:-- 0* Trying 2606:4700::6810:4255:443... * TCP_NODELAY set
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--  0* Connected to www.udemy.com (2606:4700::6810:4255) port 443  (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [3726 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=Udemy, Inc.; CN=*.udemy.com
*  start date: Sep 10 15:45:40 2020 GMT
*  expire date: Oct 12 15:45:40 2021 GMT
*  subjectAltName: host "www.udemy.com" matched cert's "*.udemy.com"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* Using Stream ID: 1 (easy handle 0x55ba70848e10)
} [5 bytes data]
> GET /course/certified-kubernetes-application-developer/ HTTP/2
> Host: www.udemy.com
> user-agent: curl/7.68.0
> accept: */*
>
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
* old SSL session ID is stale, removing
{ [5 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
} [5 bytes data]
< HTTP/2 403
< date: Sat, 15 May 2021 09:15:50 GMT
< content-type: text/plain; charset=UTF-8
< content-length: 16
< x-frame-options: SAMEORIGIN
< cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-c                                                                             heck=0, pre-check=0
< expires: Thu, 01 Jan 1970 00:00:01 GMT
< cf-request-id: 0a10e892d400000ac0a696a000000001
< expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-c                                                                             gi/beacon/expect-ct"
< set-cookie: __cf_bm=b04492251e1a16bfdad619155f03441f5707d134-1621070150-1800-AS6cROKp+jLfN9ubIJem+TuX5dANVYbshBzqeRTZhheBx6lOtfM8RPRDSGDLEObLD8tWwjbrp+D5Sh4RcCTXGNw=; path=/; expires=Sat, 15-May-21 09:45:50 GMT; domain=.udemy.com; HttpOnly; Secure; SameSite=None
< x-content-type-options: nosniff
< server: cloudflare
< cf-ray: 64fb4397bea70ac0-NRT
<
{ [16 bytes data]
100    16  100    16    0     0     10      0  0:00:01  0:00:01 --:--:--    10
* Connection #0 to host www.udemy.com left intact

1 лайк

Откуда это? 1970 год? Это более 50 лет назад.

2 лайка

Получено из ответа следующей команды:

curl https://www.udemy.com/course/certified-kubernetes-application-developer/ -o deleteme.html --verbose

1 лайк

И вот ответ от Amazon с кодом ошибки 503.

root@localhost:~# curl https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438 -o deleteme.html --verbose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.219.225.118:443...
* TCP_NODELAY set
* Connected to www.amazon.com (162.219.225.118) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4447 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=www.amazon.com
*  start date: Apr 26 00:00:00 2021 GMT
*  expire date: Apr 25 23:59:59 2022 GMT
*  subjectAltName: host "www.amazon.com" matched cert's "www.amazon.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global CA G2
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* Using Stream ID: 1 (easy handle 0x55993f5fae10)
} [5 bytes data]
> GET /Deep-Learning-Python-Francois-Chollet/dp/1617294438 HTTP/2
> Host: www.amazon.com
> user-agent: curl/7.68.0
> accept: */*
>
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [177 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
} [5 bytes data]
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
< HTTP/2 503
< server: Server
< date: Mon, 17 May 2021 01:37:18 GMT
< content-type: text/html
< strict-transport-security: max-age=47474747; includeSubDomains; preload
< x-amz-rid: 72RYS75V0EMTMX4RK38T
< vary: Content-Type,Accept-Encoding,X-Amzn-CDN-Cache,X-Amzn-AX-Treatment,User-Agent
< last-modified: Wed, 30 Sep 2020 23:54:00 GMT
< etag: "a6f-5b0909d09d600"
< accept-ranges: bytes
< content-length: 2671
<
{ [1139 bytes data]
100  2671  100  2671    0     0   3604      0 --:--:-- --:--:-- --:--:--  3599
* Connection #0 to host www.amazon.com left intact
root@localhost:~#

И ещё один момент: предпросмотр onebox для Amazon теперь работает корректно после обновления кода от Джейми. Предпросмотр до обновления можно посмотреть на этом изображении.

1 лайк

Хорошо насчет ссылки на Amazon. Работают ли теперь ссылки на Udemy или вы все еще получаете ошибку 403? У меня лично проблем с одностраничным отображением этих ссылок не возникает.

1 лайк

Спасибо еще раз.

Все гиперссылки на Udemy не работали на моем сайте.

Я только что попробовал другой форум на базе Discourse и обнаружил ту же ошибку 403.

Сайт форума: https://forum.quantifiedself.com/

Тест 1: ОК
Amazon Deep Learning with Python: Chollet, Francois: 9781617294433: Amazon.com: Books

Тест 2: Неудача с ошибкой 500. Похоже, этот сайт еще не обновлен до последней версии.
Medium https://medium.com/swlh/5-free-python-courses-for-beginners-to-learn-online-e1ca90687caf

Тест 3: Неудача, та же ошибка 403, что и у меня.
udemy https://www.udemy.com/course/certified-kubernetes-application-developer/

1 лайк

Я протестировал все известные мне сайты на базе Discourse, результаты ниже:

onebox сайт 1 сайт 2 сайт 3 сайт 4 сайт 5 сайт 6 сайт 7 сайт 8
Amazon OK OK OK OK OK OK OK OK
medium OK NG OK NG NG OK NG NG
udemy NG NG OK OK OK OK NG OK
локация* Токио Калифорния Калифорния Калифорния Калифорния Париж Калифорния Англия
Ирландия Вирджиния Чикаго
Африка Аляска
*тест с помощью Check host

сайт 1. https://vip.studycamp.tw/
сайт 2. https://forum.quantifiedself.com/
сайт 3. https://discussions.udacity.com/
сайт 4. https://forum.uipath.com/
сайт 5. https://forums.envato.com/
сайт 6. https://rideabl.es/
сайт 7. https://blenderartists.org/
сайт 8. https://se23.life/

4 лайка

Вам повезло, работает только amazon.com.
На всех остальных сайтах Amazon превью onebox не функционирует.

2 лайка

Сайты, которые вы тестируете, могут блокировать пользовательский агент curl. Процесс Oneboxing будет использовать пользовательский агент реального браузера в зависимости от URL, который вы пытаетесь обработать через Onebox. В данный момент пользовательский агент, используемый в таких случаях, следующий:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15

Попробуйте запустить ваши тесты с curl, используя флаг -A. Например:

curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15" https://www.udemy.com/course/certified-kubernetes-application-developer/ -o deleteme.html --verbose

Какой результат вы получили после выполнения этой команды?

Если ошибка всё ещё сохраняется:

  1. Не отправляли ли вы unusually большое количество запросов Oneboxing к этим сайтам? Возможно, вас временно заблокировали сами сайты, и после ожидания подходящего периода времени всё начнёт работать (это зависит от операторов сайтов, и, к сожалению, мы ничего не можем сделать с нашей стороны).

  2. Где расположен ваш сервер? Есть ли у вас доступ к машине в другом месте, с которой можно запустить тесты? Даже тестирование с вашего личного компьютера вместо продакшн-сервера может дать другие результаты.

4 лайка

Спасибо за совет.

Код ответа по-прежнему 403:

root@localhost:~# curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15" https://www.udemy.com/course/certified-kubernetes-application-developer/ -o deleteme.html --verbose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 2606:4700::6810:4155:443...
* TCP_NODELAY set
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0* Connected to www.udemy.com (2606:4700::6810:4155) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [3726 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=Udemy, Inc.; CN=*.udemy.com
*  start date: Sep 10 15:45:40 2020 GMT
*  expire date: Oct 12 15:45:40 2021 GMT
*  subjectAltName: host "www.udemy.com" matched cert's "*.udemy.com"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* Using Stream ID: 1 (easy handle 0x5591c76d8e10)
} [5 bytes data]
> GET /course/certified-kubernetes-application-developer/ HTTP/2
> Host: www.udemy.com
> user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15
> accept: */*
>
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [230 bytes data]
* old SSL session ID is stale, removing
{ [5 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
} [5 bytes data]
< HTTP/2 403
< date: Mon, 17 May 2021 23:59:37 GMT
< content-type: text/plain; charset=UTF-8
< content-length: 16
< x-frame-options: SAMEORIGIN
< cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< expires: Thu, 01 Jan 1970 00:00:01 GMT
< cf-request-id: 0a1e5e6b920000952193363000000001
< expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< set-cookie: __cf_bm=3224e014d6b0b4eca1cf8a59c6c180928b2ffa0f-1621295977-1800-AU4UK/k3sl61kbMPYizcsl1TI7NAHkvE1mfjoKIPdrvGAJJeYUF8e72hQljXNwVTO+BcqfsAXxoiQDEy1cL+aVA=; path=/; expires=Tue, 18-May-21 00:29:37 GMT; domain=.udemy.com; HttpOnly; Secure; SameSite=None
< x-content-type-options: nosniff
< server: cloudflare
< cf-ray: 6510ccf28d0a9521-NRT
<
{ [16 bytes data]
100    16  100    16    0     0     10      0  0:00:01  0:00:01 --:--:--    10
* Connection #0 to host www.udemy.com left intact

Да, запускал. Но клонированный сайт не публиковал новый контент более 20 дней, и у него та же проблема.

Кроме того, согласно таблице тестов, которую я приводил вчера, сайт 2 и сайт 7 имеют ту же проблему, и, насколько я знаю, это первые посты с Udemy на этих сайтах.

Мой сервер находится в Японии. Сегодня позже я могу перенести клонированный сайт в другой регион, например в США, для тестирования, и тогда я обновлю информацию.

Обновление:

  1. Спустя 11 часов после переноса тестового клонированного сайта из Токио в Калифорнию результат тот же — ошибка 403. Позже я перенесу его в Европу для тестирования и обновлю информацию завтра.
  2. Тот же код ошибки 403 в Лондоне.

Ещё раз спасибо.

2 лайка

Я провел ещё немного тестов со своей стороны.

Мне успешно удаётся выполнить curl запрос к URL Udemy как через мой провайдер домашнего интернета (Северная Америка), так и с машины, размещённой в крупном дата-центре (Северная Америка).

Попытка сделать то же самое через популярного хостинг-провайдера (Северная Америка) завершается неудачей. То же самое происходит при попытке через другого популярного хостинг-провайдера (Европа).

Когда запрос не удаётся, в теле ответа возвращается:

error code: 1020

что исходит от:

В этом сообщении от Cloudflare объясняется, что означает их ошибка 1020, и что можно сделать, чтобы попытаться её исправить:

https://community.cloudflare.com/t/community-tip-fixing-error-1020-access-denied/66439

5 лайков

В данный момент версия 2.7.0.beta8, если это хоть как-то поможет.

2 лайка

Новая сборка решает эту проблему: превью Onebox для Udemy снова отображается. Не уверен, какая именно часть исправления это обеспечила.

3 лайка