Извлечение данных из запросов ServiceDesk с помощью запросов

#python-3.x #python-requests

#python-3.x #python-запросы

Вопрос:

Я работаю в качестве поддержки 3-го уровня для приложения и в основном отправляю запросы от ManageEngine ServiceDesk в Jira, и это довольно скучно. Итак, я подумал, что могу создать веб-скребок на Python, используя библиотеку запросов, которая может извлекать информацию о проблеме ServiceDesk(title,description,prirority,etc) и помещать ее в Jira. Я создал скрипт, который подключается к Jira и отправляет заявку, но я не могу понять, как войти в ServiceDesk… Я пытаюсь войти в систему, используя имя пользователя, пароль и домен, но все еще не работает, я использую user-agent в качестве заголовка. Когда я запускаю скрипт, чтобы показать мне содержимое, он показывает содержимое страницы входа. Я не знаю, может ли кто-то извне помочь, но стоит попробовать.

 import requests
from bs4 import BeautifulSoup


headers = {
'user-agent': 'xxxx'}
cookies = {
'sdpcsrfcookie': 'xxxx',}
data = {
    'j_username': 'xxxx',
    'j_password': 'xxxx',
    'domain': x,
    'DOMAIN_NAME': 'xxxx',
    'LocalAuthWithDomain': 'xxxx',
    'logonDomainName': 'xxxx',
    'AUTHRULE_NAME': 'xxxx'
}

with requests.Session() as s:
   url = "https://sv.info"
   r = s.get(url, headers=headers)
   print(r.cookies)
   cookies['session'] = cookie_string = "; ".join([str(x) "=" str(y) for x,y in cookies.items()])
   r = s.post(url,headers=headers,data= data, cookies=cookies)
   print(r.content)
  

Ответ №1:

Вы должны отправить в data виде строки JSON и добавить заголовок к вашему запросу, используя s.headers.update(headers) в целом ваш код должен выглядеть следующим образом:

 import requests
from bs4 import BeautifulSoup


headers = {
'user-agent': 'xxxx'}
cookies = {
'sdpcsrfcookie': 'xxxx',}
data = {
    'j_username': 'xxxx',
    'j_password': 'xxxx',
    'domain': x,
    'DOMAIN_NAME': 'xxxx',
    'LocalAuthWithDomain': 'xxxx',
    'logonDomainName': 'xxxx',
    'AUTHRULE_NAME': 'xxxx'
}

with requests.Session() as s:
    url = "https://sv.info"
    s.headers.update(headers)
    r = s.get(url)
    print(r.cookies)
    cookies['session'] = cookie_string = "; ".join([str(x) "=" str(y) for x,y in cookies.items()])
    r = s.post(url, json=data, cookies=cookies)
    print(r.content)