import requests from html.parser import HTMLParser import sys import json import re import datetime from urllib3.exceptions import InsecureRequestWarning import selenium from selenium import webdriver from selenium.webdriver.common.keys import Keys requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) now = datetime.datetime.now() proxies = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"} headers = { "Host":"portal.tedankara.k12.tr", "User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language":"en-US,en;q=0.5", "Accept-Encoding":"gzip, deflate", "Content-Type":"application/x-www-form-urlencoded", "Origin":"https://portal.tedankara.k12.tr", "Connection":"close", "Referer":"https://portal.tedankara.k12.tr/login", "DNT":"1" } class JDParser(HTMLParser): def handle_starttag(self, tag, attrs): self.attributes = {} for attr in attrs: self.attributes[attr[0]] = attr[1] def get_meetings(uname, passwd): url = "https://portal.tedankara.k12.tr/login" r = requests.get(url,verify=False) cookies = r.cookies content = r.content lines = content.splitlines() line = list(filter(lambda x: b'_token' in x, lines))[0].decode("utf-8") parser = JDParser() parser.feed(line) parser.feed(line) parser.close() _token = parser.attributes["content"] data = "_token={}&kimlikno={}&sifre={}".format(_token,uname,passwd) r = requests.post(url,data=data,cookies=cookies,headers=headers,verify=False) cookies = r.cookies r = requests.get("https://portal.tedankara.k12.tr/veli/zoom",cookies=cookies,verify=False, headers=headers) content = r.json() data = {"current_day": content["current_day"], "current_class": content["current_class"], "current_student": content["current_student"]} headers2 = {"Host":"portal.tedankara.k12.tr", "User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0", "Accept":"application/json, text/plain, */*", "Accept-Language":"en-US,en;q=0.5", "Accept-Encoding":"gzip, deflate", "X-Requested-With":"XMLHttpRequest", "Content-Type":"application/json;charset=utf-8", "Origin":"https://portal.tedankara.k12.tr", "Connection":"close", "Referer":"https://portal.tedankara.k12.tr/", "DNT":"1"} headers2["X-XSRF-TOKEN"] = r.cookies["XSRF-TOKEN"] headers2["X-CSRF-TOKEN"] = _token r = requests.post("https://portal.tedankara.k12.tr/veli/zoom",cookies=r.cookies,verify=False, json=data, headers=headers2) classes = r.json() options = webdriver.ChromeOptions() options.add_argument('--headless') try: client = webdriver.Chrome(options=options) except: pass meetings = [] for i in classes["meetings"]: data = "_token={}&student={}&id={}".format(_token, content["students"][0],i["meeting_id"]) r = requests.post("https://portal.tedankara.k12.tr/veli/yoklama",allow_redirects=False, cookies=cookies,verify=False, data=data, headers=headers) if "Location" not in r.headers: continue invitation = r.headers["Location"] client.get(invitation) meeting_url = client.find_element_by_css_selector("a[launch='']").get_attribute("href") meetings.append({"meeting_url": meeting_url, "class": i["topic"], "time":i["meeting_time"]}) return meetings