For those who are awake!
Discount -15%
We use cookies
We use cookies to optimize our website. By continuing to browse the site, you agree to our use of cookies.
New design
Control panel
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307 Hotline
  • +38 (044) 392-74-33 Kiev
  • +38 (057) 728-39-00 Kharkiv
  • +38 (056) 794-38-31 Dnipro
  • +38 (032) 229-58-93 Lviv
  • +38 (048) 738-57-70 Odessa
  • +38(093) 170-15-42  Life
  • +38 (067) 400-88-44 Kievstar
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7 (499) 348-28-61 Moscow

API. 405 Not Allowed

caezaris
5 months
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 months
0

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

caezaris
5 months
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 months
0

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

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

rudenko
5 months
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 months
0

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

caezaris
5 months
0

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

caezaris
5 months
0

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

The topic is closed.