Last active
September 14, 2020 14:59
-
-
Save M0r13n/3e826c0bf5194b198e73d3aeca15bafe to your computer and use it in GitHub Desktop.
Requests foo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----BEGIN CERTIFICATE----- | |
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 | |
-----END CERTIFICATE----- | |
-----BEGIN CERTIFICATE----- | |
MIIFrDCCBJSgAwIBAgIHG2O60B4sPTANBgkqhkiG9w0BAQsFADCBlTELMAkGA1UEBhMCREUxRTBDBgNVBAoTPFZlcmVpbiB6dXIgRm9lcmRlcnVuZyBlaW5lcyBEZXV0c2NoZW4gRm9yc2NodW5nc25ldHplcyBlLiBWLjEQMA4GA1UECxMHREZOLVBLSTEtMCsGA1UEAxMkREZOLVZlcmVpbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTE2MDUyNDExMzg0MFoXDTMxMDIyMjIzNTk1OVowgY0xCzAJBgNVBAYTAkRFMUUwQwYDVQQKDDxWZXJlaW4genVyIEZvZXJkZXJ1bmcgZWluZXMgRGV1dHNjaGVuIEZvcnNjaHVuZ3NuZXR6ZXMgZS4gVi4xEDAOBgNVBAsMB0RGTi1QS0kxJTAjBgNVBAMMHERGTi1WZXJlaW4gR2xvYmFsIElzc3VpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdO3kcR94fhsvGadcQnjnX2aIw23IcBX8pX0to8a0Z1kzhaxuxC3+hq+B7i4vYLc5uiDoQ7lflHn8EUTbrunBtY6C+li5A4dGDTGY9HGRp5ZukrXKuaDlRh3nMF9OuL11jcUs5eutCp5eQaQW/kP+kQHC9A+e/nhiIH5+ZiE0OR41IX2WZENLZKkntwbktHZ8SyxXTP38eVC86rpNXp354ytVK4hrl7UF9U1/Isyr1ijCs7RcFJD+2oAsH/U0amgNSoDac3iSHZeTn+seWcyQUzdDoG2ieGFmudn730Qp4PIdLsDfPU8o6OBDzy0dtjGQ9PFpFSrrKgHy48+enTEzNAgMBAAGjggIFMIICATASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjApBgNVHSAEIjAgMA0GCysGAQQBga0hgiweMA8GDSsGAQQBga0hgiwBAQQwHQYDVR0OBBYEFGs6mIv58lOJ2uCtsjIeCR/oqjt0MB8GA1UdIwQYMBaAFJPj2DIm2tXxSqWRSuDqS+KiDM/hMIGPBgNVHR8EgYcwgYQwQKA+oDyGOmh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NybC9jYWNybC5jcmwwQKA+oDyGOmh0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NybC9jYWNybC5jcmwwgd0GCCsGAQUFBwEBBIHQMIHNMDMGCCsGAQUFBzABhidodHRwOi8vb2NzcC5wY2EuZGZuLmRlL09DU1AtU2VydmVyL09DU1AwSgYIKwYBBQUHMAKGPmh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MEoGCCsGAQUFBzAChj5odHRwOi8vY2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWcyLWNhL3B1Yi9jYWNlcnQvY2FjZXJ0LmNydDANBgkqhkiG9w0BAQsFAAOCAQEAgXhFpE6kfw5V8Amxaj54zGg1qRzzlZ4/8/jfazh3iSyNta0+x/KUzaAGrrrMqLGtMwi2JIZiNkx4blDw1W5gjU9SMUOXRnXwYuRuZlHBQjFnUOVJ5zkey5/KhkjeCBT/FUsrZpugOJ8Azv2n69F/Vy3ITF/cEBGXPpYEAlyEqCk5bJT8EJIGe57u2Ea0G7UDDDjZ3LCpP3EGC7IDBzPCjUhjJSU8entXbveKBTjvuKCuL/TbB9VbhBjBqbhLzmyQGoLkuT36d/HSHzMCv1PndvncJiVBby+mG/qkE5D6fH7ZC2Bd7L/KQaBh+xFJKdioLXUV2EoY6hbvVTQiGhONBg== | |
-----END CERTIFICATE----- | |
-----BEGIN CERTIFICATE----- | |
MIIFEjCCA/qgAwIBAgIJAOML1fivJdmBMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMgR21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwcVC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMjAeFw0xNjAyMjIxMzM4MjJaFw0zMTAyMjIyMzU5NTlaMIGVMQswCQYDVQQGEwJERTFFMEMGA1UEChM8VmVyZWluIHp1ciBGb2VyZGVydW5nIGVpbmVzIERldXRzY2hlbiBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQLEwdERk4tUEtJMS0wKwYDVQQDEyRERk4tVmVyZWluIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLYNf/ZqFBzdL6h5eKc6uZTepnOVqhYIBHFU6MlbLlz87TV0uNzvhWbBVVdgfqRv3IA0VjPnDUq1SAsSOcvjcoqQn/BV0YD8SYmTezIPZmeBeHwp0OzEoy5xadrg6NKXkHACBU3BVfSpbXeLY008F0tZ3pv8B3Teq9WQfgWi9sPKUA3DW9ZQ2PfzJt8lpqS2IB7qw4NFlFNkkF2njKam1bwIFrEczSPKiL+HEayjvigN0WtGd6izbqTpEpPbNRXK2oDL6dNOPRDReDdcQ5HrCUCxLx1WmOJfS4PSu/wI7DHjulv1UQqyquF5deM87I8/QJB+MChjFGawHFEAwRx1npAgMBAAGjggF0MIIBcDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJPj2DIm2tXxSqWRSuDqS+KiDM/hMB8GA1UdIwQYMBaAFL9ZIDYAeaCgImuM1fJh0rgsy4JKMBIGA1UdEwEB/wQIMAYBAf8CAQIwMwYDVR0gBCwwKjAPBg0rBgEEAYGtIYIsAQEEMA0GCysGAQQBga0hgiweMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vcGtpMDMzNi50ZWxlc2VjLmRlL3JsL1RlbGVTZWNfR2xvYmFsUm9vdF9DbGFzc18yLmNybDCBhgYIKwYBBQUHAQEEejB4MCwGCCsGAQUFBzABhiBodHRwOi8vb2NzcDAzMzYudGVsZXNlYy5kZS9vY3NwcjBIBggrBgEFBQcwAoY8aHR0cDovL3BraTAzMzYudGVsZXNlYy5kZS9jcnQvVGVsZVNlY19HbG9iYWxSb290X0NsYXNzXzIuY2VyMA0GCSqGSIb3DQEBCwUAA4IBAQCHC/8+AptlyFYt1juamItxT9q6Kaoh+UYu9bKkD64ROHk4sw50unZdnugYgpZi20wz6N35at8yvSxMR2BVf+d0a7Qsg9h5a7a3TVALZge17bOXrerufzDmmf0i4nJNPoRb7vnPmep/11I5LqyYAER+aTu/de7QCzsazeX3DyJsR4T2pUeg/dAaNH2t0j13s+70103/w+jlkk9ZPpBHEEqwhVjAb3/4ru0IQp4e1N8ULk2PvJ6Uw+ft9hj4PEnnJqinNtgs3iLNi4LY2XjiVRKjO4dEthEL1QxSr2mMDwbf0KJTi1eYe8/9ByT0/L3D/UqSApcb8re2z2WKGqK1chk5 | |
-----END CERTIFICATE----- | |
-----BEGIN CERTIFICATE----- | |
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== | |
-----END CERTIFICATE----- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import re | |
import requests as req | |
import logging | |
logging.basicConfig(level=logging.DEBUG) | |
CERT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'cert.pem') | |
LOGIN = {'username': '_', 'password': '_', 'login': 'Login'} | |
RE_MARK_ROW = r"^<td(.*)<\/td>$" | |
RE_ROWS = r">([^<]+)<" | |
def extract_marks(text): | |
""" | |
This methods parses a response of /studierende/leistungen into a dict containing relevant data. | |
Sample response: | |
[{ | |
'year': 'Semester', | |
'name': 'Modul', | |
'lesson': 'Note', | |
'mark': 'ECTS', | |
'ects': 'Dozent', | |
'prof': 'Scheinart' | |
}, | |
... | |
] | |
""" | |
text = text.split('Leistungsnachweise')[-1] | |
raw_mark_rows = [x.group() for x in re.finditer(RE_MARK_ROW, text, flags=re.MULTILINE)] | |
marks = [re.findall(RE_ROWS, row) for row in raw_mark_rows] | |
mark_keys = ['year', 'name', 'mark', 'ects', 'prof', 'type'] | |
marks = [{key: value for (key, value) in zip(mark_keys, y)} for y in marks] | |
return marks | |
with req.Session() as sess: | |
logged = sess.post( | |
"https://studidb.informatik.uni-kiel.de:8484/studierende/login", | |
data=LOGIN, | |
allow_redirects=False, | |
verify=CERT | |
) | |
s_id = logged.headers['Location'][17:] | |
# Load welcome page to persist session data on server | |
sess.get( | |
"https://studidb.informatik.uni-kiel.de:8484/studierende/start", | |
params={'session_id': s_id}, | |
verify=CERT | |
) | |
res = sess.get( | |
"https://studidb.informatik.uni-kiel.de:8484/studierende/leistungen", | |
params={'session_id': s_id}, | |
verify=CERT | |
) | |
print(extract_marks(res.text)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Naaaaaaaaaaaaaaaaaaaaais 🥇