예제 #1
0
    def login(self):
        """
        輸入帳號密碼登入學生請假紀錄系統。

        :return: 登入後的網頁 respond 物件。
        """
        # 先開啟起始網頁取得初始cookies取得權限
        pre_web = self.rs.get(self.pre_url,
                              headers=self.nor_headers,
                              verify=False)  # 用 fiddler 驗證不會過,所以要關閉
        pre_cookies = requests.utils.dict_from_cookiejar(self.rs.cookies)

        # 登入學校系統
        login_web = self.rs.post(self.login_url,
                                 headers=self.nor_headers,
                                 data=self.login_data)
        login_cookies = requests.utils.dict_from_cookiejar(self.rs.cookies)
        remove_cookie_by_name(
            self.rs.cookies,
            'PHPSESSID')  # 不知道 cookie 多了不必要的PHPSESSID會不會怎樣,先刪除好了

        # 檢查登入有沒有失敗
        if login_web.url != r'https://my.ntu.edu.tw/stuLeaveManagement/SignList_teacher.aspx':
            raise LoginError('登入失敗!!!')

        return login_web
예제 #2
0
 def remove_cookies(self, cookies: List[Dict[str, str]]):
     for cookie in cookies:
         remove_cookie_by_name(
             self.cookie_jar,
             cookie['name'],
             domain=cookie.get('domain', None),
             path=cookie.get('path', None)
         )
예제 #3
0
    "ctl00$ContentPlaceHolder1$GVapprovedList$ctl11$HiddenField2": "003+10220",
    "ctl00$ContentPlaceHolder1$GVapprovedList$ctl13$PageDropDownList": "第2頁"
}

# 開始瀏覽網頁囉
if __name__ == "__main__":
    rs = requests.Session()

    # 先開啟起始網頁取得初始cookies取得權限
    pre_web = rs.get(pre_url, headers=headers, verify=False)
    pre_cookies = requests.utils.dict_from_cookiejar(rs.cookies)
    # 登入學校系統
    login_web = rs.post(login_url, headers=headers, data=login_data)

    login_cookies = requests.utils.dict_from_cookiejar(rs.cookies)
    remove_cookie_by_name(rs.cookies,
                          'PHPSESSID')  # 不知道 cookie 多了不必要的PHPSESSID會不會怎樣,先刪除好了

    # 直接從這邊要開始查詢了
    # 進入學生請假紀錄系統
    search_web = rs.get(search_url, headers=headers)

    search_cookies = requests.utils.dict_from_cookiejar(rs.cookies)

    # 開始輸入查詢條件查詢了
    ## 要先搞定 aspx 的動態驗證參數,把參數送到查詢表單裡
    selector_eventval = etree.HTML(search_web.text)
    search_data["__EVENTVALIDATION"] = selector_eventval.xpath(
        r'//*[@id="__EVENTVALIDATION"]/@value')[0]
    search_data["__VIEWSTATE"] = selector_eventval.xpath(
        r'//*[@id="__VIEWSTATE"]/@value')[0]
예제 #4
0
 def __delitem__(self, name):
     remove_cookie_by_name(self, name)
예제 #5
0
 def __setitem__(self, name, value):
     if value is None:
         remove_cookie_by_name(self, name)
     else:
         self.set_cookie(create_cookie(name, value))