Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Новый дизайн
Панель управления
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

API. 405 Not Allowed

caezaris
5 месяцев
0

По какой причине может приходить ответ 405 Not Allowed? Вайтлистинг IP выключен. Ниже лог запроса и ответа:

2021-03-08 17:23:46,154:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): adm.tools:443
2021-03-08 17:23:46,188:DEBUG:urllib3.connectionpool:Вход "POST /action/dns/list/ HTTP/1.1" 405 150

send: b'POST /action/dns/list/ HTTP/1.1\r\nHost: adm.tools\r\nUser-Agent: python-requests/2.25.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nAuthorization: Bearer <token removed>\r\nContent-Length: 0
'
reply: 'HTTP/1.1 405 Not Allowed\r\n'
header: Server: nginx
header: Date: Mon, 08 Mar 2021 15:23:46 GMT
header: Content-Type: text/html
header: Content-Length: 150
header: Connection: keep-alive
header: x-ray: wn2147:0.000/

LitvinenkoAndrey
5 месяцев
0

Попробуйте поменять useragent на другой.

caezaris
5 месяцев
0

Спасибо за ответ. Это помогло, правда через несколько тестов снова вернулась 405 - пришлось снова менять агента. Ложное срабатывание какой-то защиты?

Но я продвинулся не слишком далеко, теперь я получаю 429 Too Many Requests на один из следующих запросов:

send: b'POST /action/dns/records_add HTTP/1.1\r\nHost: adm.tools\r\nUser-Agent: certbot2\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nAuthorization: Bearer <token removed>\r\nContent-Length: 97\r\nContent-Type: application/x-www-form-urlencoded
'
send: b'domain_id=960238&type=TXT&record=_acme-challenge&data=ZaLKRQvD61KAFF-mX8tunwEZ4jHurWm_NOIXfk_UEDs'
reply: 'HTTP/1.1 429 Too Many Requests\r\n'
header: Server: nginx
header: Date: Tue, 09 Mar 2021 16:26:54 GMT
header: Content-Type: application/json; charset=utf-8
header: Transfer-Encoding: chunked
header: Connection: keep-alive
header: Strict-Transport-Security: max-age=15552000
header: Access-Control-Allow-Methods: POST
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Cache-Control: no-store, no-cache, must-revalidate
header: Pragma: no-cache
header: Set-Cookie: PHPSESSID=78390513f4c1b79380cd3c3758af46e2; path=/; secure; HttpOnly; SameSite=1
header: x-ray: wn2147:0.040/wa2147:D=44458
header: X-Frame-Options: SAMEORIGIN
Cleaning up challenges


Это третий запрос в цепочке. В целом мне нужно реализовать такую логику:
1. получить domain_id по его названию (dns/list)
2. получить список записей домена, чтоб проверить нет ли там уже нужной записи (dns/records_list)
3. если нет - добавить запись (dns/records_add)
4. подождать
5. удалить запись (dns/records_delete)

LitvinenkoAndrey
5 месяцев
0

429 Too Many Requests — слишком много запросов (более 2 в секунду). Как вариант просто поставьте sleep на одну секунду между каждым запросом.

По поводу ошибки 403(405 в случае, если это POST запрос), то попробуйте использовать "обычный" useragent(не пробуйте представляться поисковым ботом или еще кем-то)

rudenko
5 месяцев
0

На github обновлено API, в нем реализованы методы, которые вам нужны:

github.com/ukraine-com-ua/API/blob/Initial/HostingAPI.class.php

так же добавлены примеры обращений к API:

github.com/ukraine-com-ua/API/blob/Initial/example.php

так как вы пишите на python, то вряд ли он вам сильно поможет. :(

caezaris
5 месяцев
0

Через несколько тестовых прогонов скрипта я получаю 405 Not Allowed даже с обычным юзер агентом скопированным их хрома. Кажется ваша система защиты работает чрезмерно.

caezaris
5 месяцев
0

Отмена, в этот раз это была ошибка в URL

caezaris
5 месяцев
0

Благодарю за помощь, получилось завершить скрипт. Возможно будет полезен:
github.com/alex-shevchenko/certbot-dns-ukrainecomua

Тема закрыта.