Найти - Пользователи
Полная версия: API ver 10.1 Siem Qradar + python
Начало » Python для экспертов » API ver 10.1 Siem Qradar + python
1 2
usmesn
Всем привет. Кто делал запросы API ver 10.1 in Qradar к reference map of set . Не могу разобраться. Прошу помощи. Я так понял что с помощью библиотеки request это не возможно сделать, может ошибаюсь.
py.user.next
usmesn
Я так понял что с помощью библиотеки request это не возможно сделать
Если это возможно сделать по HTTP, то с помощью requests это возможно сделать.

Используй программу curl для предварительного анализа. Через неё можно любые запросы по HTTP посылать без скриптов, чтобы просто выяснить, как они должны посылаться.
usmesn
система даже сама генирит этот curl
curl -s -X GET -u username:password -H ‘Range: items=0-49’ -H ‘Version: 10.1’ -H ‘Accept: application/json’ 'https://xxxxxxxxxxxxx.ru/api/reference_data/map_of_sets/ESET_hostname'
но он не работает из командной строки.
Действия происходят в домене, в котором есть прокси, указывал параметры авторизации все равно не работает. Я так полагаю что я должен сначала авторизоваться на прокси с помощью доменной учетной записи, потом также указать авторизационные данные необходимые для API данного сервера, чтобы обратиться к конечной точке ESET_hostname.

или может этот curl конвертировать в requests запрос, но пока не получается
py.user.next
usmesn
но он не работает из командной строки
Так вот надо выяснить, что ты пишешь неправильно.

usmesn
или может этот curl конвертировать в requests запрос
Тебе это не поможет, потому что ты даже не понимаешь, что ты делаешь. Одного curl достаточно, чтобы получить данные. Когда получишь данные, тогда и requests можешь применять. Что curl, что requests посылают одно и то же, только это записывается для них по-разному. И вот это одно и то же ты и не можешь сформулировать.
usmesn
при получении данных curl возвращает
curl: (56) Received HTTP code 502 from proxy after CONNECT, что можно посмореть
py.user.next
wiki. коды ответов HTTP
502 Bad Gateway — сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0.

usmesn
что можно посмореть
Найди систему рабочую, на ней всё отладь, можешь даже скрипт на Python написать. Когда ты убедишься, что ты всё правильно делаешь с рабочим сервером, тогда ты придёшь в этот банк и будешь выяснять, как к нему подключиться (может быть, письмо им напишешь туда). Я полазил у них до докам, они не пишут ничего практически. Это может свидетельствовать о том, что у них там не очень грамотные ребята сидят, которые могли допустить ошибку в настройках, из-за которой ты сейчас думаешь, что ты что-то сделать не можешь. Так что не зацикливайся на них, найди дублирующую систему, где точно всё работает, и проверяй всё на них обеих.
usmesn
я работаю в этом банке, есть необходимость забрать инфу в формате json средствами api на питоне, изучаю данную тему, параметры прокси в браузере посмотрел.
Начал с самого простого:
вот такой скрипт например работает исправно(lданные прокси замаскированны)
import requests
url = 'https://yandex.ru'
proxies= {'https':'https://user:pass@xxxxx:xxxx'}
response = requests.get(url=url, proxies=proxies)
print(response.status_code)
response.close()

А такой нет
import requests
url = 'https://xxxxxxxx.ru/console/logon.jsp'
proxies= {'https':'https://user:pass@xxxxx:xxxx'}
response = requests.get(url=url, proxies=proxies)
print(response.status_code)
вот такая ошибка
Traceback (most recent call last):
File “C:\p\google.py”, line 4, in <module>
response = requests.get(url=url, proxies=proxies)
File “C:\Program Files\Python37\lib\site-packages\requests\api.py”, line 76, in get
return request('get', url, params=params, **kwargs)
File “C:\Program Files\Python37\lib\site-packages\requests\api.py”, line 61, in request
return session.request(method=method, url=url, **kwargs)
File “C:\Program Files\Python37\lib\site-packages\requests\sessions.py”, line 530, in request
resp = self.send(prep, **send_kwargs)
File “C:\Program Files\Python37\lib\site-packages\requests\sessions.py”, line 643, in send
r = adapter.send(request, **kwargs)
File “C:\Program Files\Python37\lib\site-packages\requests\adapters.py”, line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='consiem.is01.zenit.ru', port=443): Max retries exceeded with url: /console/logon.jsp (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 cannotconnect')))
py.user.next
usmesn
вот такой скрипт например работает исправно
На заморачивайся на этой фигне пока что. У тебя вопрос “API ver 10.1 Siem Qradar”. Ты хочешь узнать, как правильно получать данные. Найди такую систему на стороне, в которой стопроцентно всё работает и получи от неё данные. Когда ты с этим справишься и узнаешь точно, как их получать, тогда ты и будешь выяснять, что там происходит в этом твоём банке и почему соединение не строится. Потому что к API построение соединения никакого отношения не имеет.

Ошибка 502 говорит о том, что там внутри происходит какая-то фигня. А какая фигня происходит из тысячи возможных фигнь, надо выяснять отдельно. Что там может быть сломано, да дофига чего может быть там сломано. И это запросто может не иметь к тебе вообще никакого отношения. Админ там какую-нибудь херню понастроил, в итоге оно на Яндекс ходит, а внутри не ходит. Это один из тысячи вариантов, на которые жалко время тратить. А ты думаешь “у меня там что-то с кодом неправильно! какой же я тупой!”.

У меня твой узел вообще не пингуется
[guest@localhost ~]$ .ping consiem.is01.zenit.ru
ping: consiem.is01.zenit.ru: Name or service not known
[guest@localhost ~]$
Значит, он закрыт. А при закрытии может куча настроек быть неправильно сделана. И админ тебе не скажет “знаешь, я такой дурачок, я пропёрся немного, когда настраивал”, он будет сидеть до талого и изображать, что всё правильно сделал, пока ему не посыпятся письма на почту “открой эту фигню, мы не можем подключиться”.
usmesn
Удалось обойти прокси
import requests
один из вариантов
import os
os.environ = ‘*’


url = 'https://consiem.is01.zenit.ru/console/logon.jsp'
user_agent = {'User-Agent': ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36’}
response = requests.get(url=url, headers=user_agent, verify=False)
print(response.text)
получил 200 статус, пока нет времени получить то что нужно а также обработать результат с помощью API, а также не получилось curl забрать данные, хотя есть ключ –noproxy
py.user.next
usmesn
import os
os.environ = ‘*’
А это здесь при чём? Ты точно уверен, что это хотя бы какую-то роль играет в соединении?

Попробуй именно User-Agent подавать, который через curl прекрасно подаётся.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB