You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
819 B

  1. from urllib.parse import urlparse
  2. from lxml.html import fromstring as lxml_from_string
  3. from panera_sync.fill_form import get_form_fields
  4. def saml_submit(session, response):
  5. origin_url = response.url
  6. url_parse_result = urlparse(origin_url)
  7. headers = {
  8. "Origin": f"{url_parse_result.scheme}://{url_parse_result.netloc}",
  9. "Referer": origin_url,
  10. }
  11. parsed = lxml_from_string(response.text)
  12. form = parsed.xpath("//form")[0]
  13. post_url, to_submit = get_form_fields(form)
  14. return session.post(post_url, data=to_submit, headers=headers)
  15. def saml_check(session, response, response_text=None):
  16. parsed = lxml_from_string(response.text)
  17. witness = parsed.xpath('//form//input[contains(@name,"SAML")]')
  18. if len(witness) != 0:
  19. return saml_submit(session, response)