精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用Python實現模擬登錄正方教務系統搶課

開發 后端
最近學校開始選課,但是如果選課時間與自己的事情沖突,這時候就可以使用Python腳本自助搶課,搶課的第一步即是模擬登錄,需要模擬登錄后保存登錄信息然后再進行操作。

最近學校開始選課,但是如果選課時間與自己的事情沖突,這時候就可以使用Python腳本自助搶課,搶課的***步即是模擬登錄,需要模擬登錄后保存登錄信息然后再進行操作。

而且整個流程是比較簡單,這是因為正方教務系統是比較舊的,全文的IP地址部分遮擋,請換成你們學校的IP地址。

嘗試登錄

首先我們打開學校的教務系統,隨便輸入,然后提交表單,打開Chrome的開發者工具中的Network準備抓包

 


把css 圖片之類的過濾掉,發現了default.aspx這個東西

如果你們學校教務系統不使用Cookie則會是這樣

 

我們可以發現,真實的請求地址為http://110.65.10.xxx/(bdq1aj45lpd42o55vqpfgpie)/default2.aspx

隨后我們發現這個網址括號圍起來的一串信息有點詭異,而且每次進入的時候信息都不一樣,經過資料查詢,這是一種ASP.NET不使用Cookie會話管理的技術。

那這樣就很好辦了,我們只需要登錄時記錄下這個數據即可保持登錄狀態。

經過測試發現,我們可以隨便偽造一個會話信息即可一直保持登錄狀態,但是為了體現模擬登錄的科學性,我們需要先獲取該會話信息。

如果你們學校教務系統使用Cookie則會是這樣

 

服務器會返回一個Cookie值,然后在本地保存,這與下面的會不相同。

獲取會話信息(不使用Cookie)

這里我們要使用requests庫,并且要偽造header的UA信息

經過測試發現,我們只訪問學校的IP地址,會自動重定向至有會話信息的網址,所以我們先訪問一下IP地址。

  1. class Spider: 
  2.     def __init__(self, url): 
  3.         self.__uid = '' 
  4.         self.__real_base_url = '' 
  5.         self.__base_url = url 
  6.         self.__headers = { 
  7.             'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
  8.         } 
  9.     def __set_real_url(self): 
  10.         request = requests.get(self.__base_url, headers=self.__headers) 
  11.         real_url = request.url 
  12.         self.__real_base_url = real_url[:len(real_url) - len('default2.aspx')] 
  13.         return request 

上面獲取的url即為帶有會話信息的網址,保存的url格式為http://110.65.10.xxx/(bdq1aj45lpd42o55vqpfgpie)/

保存為這樣的格式是因為我們要訪問其他地址

獲取會話信息(使用Cookie)

有些學校的教務系統是使用Cookie的,我們只需要***get請求時保存Cookie即可,然后此后一直使用該cookie

  1. def get_cookie(): 
  2.     request = requests.get('http://xxx.xxx.xxx.xxx') #以某教務系統為例子 
  3.     cookie = requets.cookie 
  4.     return cookie 

而requests中使用Cookie很簡單

只需要這樣

  1. def use_cookie(cookie): 
  2.     request = requests.get('http://xxx.xxx.xxx.xxx',cookie=cookie) 

由于我們學校采用的是無Cookie方案,所以下面的代碼均沒有發送Cookie,如果你的學校采用了Cookie,只需要像我上面這樣發送Cookie就行了。

而如果你們學校使用Cookie,就不必獲取帶有會話信息的地址了,直接存儲Cookie即可。

驗證碼的處理

分析r返回的文本信息

發現驗證碼的標簽的資源地址為 src=”CheckCode.aspx” ,我們可以直接requests然后下載驗證碼圖片,下載圖片的一種優雅的方式如下

  1. def __get_code(self): 
  2.     request = requests.get(self.__real_base_url + 'CheckCode.aspx', headers=self.__headers) 
  3.     with open('code.jpg''wb')as f: 
  4.         f.write(request.content) 
  5.     im = Image.open('code.jpg'
  6.     im.show() 
  7.     print('Please input the code:'
  8.     code = input() 
  9.     return code 

上面的代碼把圖片保存為code.jpg,Python有一個Image模塊,可以實現自動打開圖片

這樣驗證碼就展示出來了,我們人工輸入或者轉入打碼平臺皆可

登錄數據的構造

這是上面抓的登錄post的數據包,

 

發現有信息無法被解碼,應該是gb2312編碼,查看解碼前的編碼

 

然后將不能解碼的代碼復制能夠解碼的地方

發現%D1%A7%C9%FA編碼解碼后為學生

這也就對應了學生選項的登錄

學號和密碼和驗證碼能夠顯而易見地知道是哪些信息,但是我們發現有__VIEWSTATE這一項

查找一下,這是一個表單隱藏信息,我們可以用BeautifulSoup庫解析可以得出該一項數據的值

 

這是完整的登錄數據包,

  1. def __get_login_data(self, uid, password): 
  2.     self.__uid = uid 
  3.     request = self.__set_real_url() 
  4.     soup = BeautifulSoup(request.text, 'lxml'
  5.     form_tag = soup.find('input'
  6.     __VIEWSTATE = form_tag['value'
  7.     code = self.__get_code() 
  8.     data = { 
  9.         '__VIEWSTATE': __VIEWSTATE, 
  10.         'txtUserName': self.__uid, 
  11.         'TextBox2'password
  12.         'txtSecretCode': code, 
  13.         'RadioButtonList1''學生'.encode('gb2312'), 
  14.         'Button1'''
  15.         'lbLanguage'''
  16.         'hidPdrs'''
  17.         'hidsc'''
  18.     } 
  19.     return data 

登錄

如果登錄完成了,如何判斷是否登錄成功呢?我們從登錄成功返回的界面發現有姓名這一標簽,而我們等一下也是需要學生姓名,所以我們用這個根據來判斷是否登錄成功。

 

代碼如下,進行了驗證碼用戶名和密碼的提示信息判別

  1. def login(self,uid,password): 
  2.     while True
  3.         data = self.__get_login_data(uid, password
  4.         request = requests.post(self.__real_base_url + 'default2.aspx', headers=self.__headers, data=data) 
  5.         soup = BeautifulSoup(request.text, 'lxml'
  6.         try: 
  7.             name_tag = soup.find(id='xhxm'
  8.             self.__name = name_tag.string[:len(name_tag.string) - 2] 
  9.             print('歡迎'+self.__name) 
  10.         except
  11.             print('Unknown Error,try to login again.'
  12.             time.sleep(0.5) 
  13.             continue 
  14.         finally: 
  15.             return True 

獲取選課信息

接下來就是獲取選課信息了,這里我們以校公選課為例子,點擊進去,進行抓包,headers沒有什么好注意的,我們只用關注get發送的包即可

 

 

發現有學號與姓名與gnmkdm這一項,姓名我們需要編碼為gb2312的形式才能進行傳送

這里我們注意headers需要新增Referer項也就是當前訪問的網址,才能進行請求

  1. def __enter_lessons_first(self): 
  2.     data = { 
  3.         'xh': self.__uid, 
  4.         'xm': self.__name.encode('gb2312'), 
  5.         'gnmkdm''N121103'
  6.     } 
  7.     self.__headers['Referer'] = self.__real_base_url + 'xs_main.aspx?xh=' + self.__uid 
  8.     request = requests.get(self.__real_base_url + 'xf_xsqxxxk.aspx', params=data, headers=self.__headers) 
  9.     self.__headers['Referer'] = request.url 
  10.     soup = BeautifulSoup(request.text, 'lxml'
  11.     self.__set__VIEWSTATE(soup) 

注意到上面有一個設置VIEWSTATE值的函數,這里等下在選課構造數據包的時候會講

模擬選課

隨便選一門課,然后提交,抓包,看一下有什么數據發送

 

前三個值可以在原網頁中input標簽中找到,由于前兩項為空,就不獲取了,而第三項我們使用soup解析獲取即可,由于這個操作是每請求一次就變化的,我們寫成一個函數,每次請求完成就設置一次。

 


  1. def __set__VIEWSTATE(self, soup): 
  2.     __VIEWSTATE_tag = soup.find('input', attrs={'name''__VIEWSTATE'}) 
  3.     self.__base_data['__VIEWSTATE'] = __VIEWSTATE_tag['value'

而其他數據,我們通過搜索響應網頁就可以知道他們是干什么用的,這里我只說明我們要用的數據。

TextBox1為搜索框數據,我們可以用這個來搜索課程,dpkcmcGrid:txtPageSize為一頁顯示多少數據,經過測試,服務器最多響應200條。

值得注意的是ddl_xqbs這個校區數據信息,我所在的校區的數字代號為2,也許不同學校設置有所不同,需要自己設置一下,也可以從網頁中獲取

下面是基礎數據包,由于我們搜索課程與選擇課程都要使用這個基礎數據包,所以我們直接在init函數里面新增

  1. self.__base_data = { 
  2.     '__EVENTTARGET'''
  3.     '__EVENTARGUMENT'''
  4.     '__VIEWSTATE'''
  5.     'ddl_kcxz'''
  6.     'ddl_ywyl'''
  7.     'ddl_kcgs'''
  8.     'ddl_xqbs''2'
  9.     'ddl_sksj'''
  10.     'TextBox1'''
  11.     'dpkcmcGrid:txtChoosePage''1'
  12.     'dpkcmcGrid:txtPageSize''200'

然后我們關注一下這條數據,我們搜索一下,發現這是課程的提交選課的代碼,所以我們也可以直接從網頁中獲取,而on表示選項被選上

 

  1. kcmcGrid:_ctl2:xk:'on' 

搜索課程

課程有很多信息,比如名字,上課時間,地點,這些東西確定好了才知道選的是哪門課,所以我們先新建一個類來存儲信息

  1. class Lesson: 
  2.     def __init__(self, name, code, teacher_name, Time, number): 
  3.         self.name = name 
  4.         self.code = code 
  5.         self.teacher_name = teacher_name 
  6.         self.time = Time 
  7.         self.number = number 
  8.     def show(self): 
  9.         print('name:' + self.name + 'code:' + self.code + 'teacher_name:' + self.teacher_name + 'time:' + self.time

有了這個類,我們就可以進行搜索課程了,具體代碼看下面代碼,解析網頁內容就不細講了。

  1. def __search_lessons(self, lesson_name=''): 
  2.     self.__base_data['TextBox1'] = lesson_name.encode('gb2312'
  3.     request = requests.post(self.__headers['Referer'], data=self.__base_data, headers=self.__headers) 
  4.     soup = BeautifulSoup(request.text, 'lxml'
  5.     self.__set__VIEWSTATE(soup) 
  6.     return self.__get_lessons(soup) 
  7. def __get_lessons(self, soup): 
  8.     lesson_list = [] 
  9.     lessons_tag = soup.find('table', id='kcmcGrid'
  10.     lesson_tag_list = lessons_tag.find_all('tr')[1:] 
  11.     for lesson_tag in lesson_tag_list: 
  12.         td_list = lesson_tag.find_all('td'
  13.         code = td_list[0].input['name'
  14.         name = td_list[1].string 
  15.         teacher_name = td_list[3].string 
  16.         Time = td_list[4]['title'
  17.         number = td_list[10].string 
  18.         lesson = self.Lesson(name, code, teacher_name, Time, number) 
  19.         lesson_list.append(lesson) 
  20.     return lesson_list 

進行選課

選課我們只要將lesson_list傳入即可,這就是我們之前創建的Lesson類的實例的列表,’Button’的內容為’ 提交 ‘,這兩邊各有一個空格,完事后我們可以進行發送請求進行選課。

這里我們用正則提取了錯誤信息,比如選課時間未到、上課時間沖突這些錯誤信息來提示用戶,我們還解析了網頁的已選課程,這里也不細講了,都是基礎的網頁解析。

  1. def __select_lesson(self, lesson_list): 
  2.     data = copy.deepcopy(self.__base_data) 
  3.     data['Button1'] = '  提交  '.encode('gb2312'
  4.     for lesson in lesson_list: 
  5.         code = lesson.code 
  6.         data[code] = 'on' 
  7.     request = requests.post(self.__headers['Referer'], data=data, headers=self.__headers) 
  8.     soup = BeautifulSoup(request.text, 'lxml'
  9.     self.__set__VIEWSTATE(soup) 
  10.     error_tag = soup.html.head.script 
  11.     if not error_tag is None: 
  12.         error_tag_text = error_tag.string 
  13.         r = "alert\('(.+?)'\);" 
  14.         for s in re.findall(r, error_tag_text): 
  15.             print(s) 
  16.     print('已選課程:'
  17.     selected_lessons_pre_tag = soup.find('legend', text='已選課程'
  18.     selected_lessons_tag = selected_lessons_pre_tag.next_sibling 
  19.     tr_list = selected_lessons_tag.find_all('tr')[1:] 
  20.     for tr in tr_list: 
  21.         td = tr.find('td'
  22.         print(td.string) 

總結

這次我們完成了模擬正方教務系統選課的過程,由于這個教務系統技術比較陳舊,所以比較好弄,事實上搶課的時候用Fiddler即可完成操作,因為我們只需要提前登錄然后記錄網址即可。

本文代碼Github地址:https://github.com/vhyz/ZF_Spider

責任編輯:未麗燕 來源: whyz's Blog
相關推薦

2024-01-12 18:26:44

2023-03-09 08:12:08

免登錄實Python腳本

2021-08-02 12:29:15

Python爬蟲網站

2020-08-19 17:14:26

Python數據函數

2018-01-02 09:56:04

Python12306火車票

2012-08-21 11:26:17

Winform

2020-02-11 16:10:44

Redis分布式鎖Java

2025-04-02 07:22:19

2021-01-06 10:09:05

Spring Boothttps sslhttps

2023-07-02 14:05:13

2021-05-25 10:05:39

Python模擬導彈代碼

2020-02-24 10:29:24

數據庫系統肺炎

2016-09-12 14:05:27

PythonPython解釋器Web

2025-05-19 07:39:45

2022-02-25 14:04:56

TS前端代碼

2024-06-19 10:48:31

ChatGPTGPT項目

2020-12-18 08:55:20

Python火車票代碼

2015-06-30 15:14:54

2019-01-09 09:35:41

搶票Python軟件

2014-12-22 11:07:18

12306
點贊
收藏

51CTO技術棧公眾號

91tv官网精品成人亚洲| av网站在线看| 日日夜夜免费精品| 色先锋资源久久综合5566| 污视频网址在线观看| 肉肉视频在线观看| 国产午夜精品久久久久久免费视| 成人av资源在线播放| 久久久久性色av无码一区二区| 五月国产精品| 欧美日韩国产影片| 精品国产一区二区三区无码| 可以在线观看的av网站| 国产呦萝稀缺另类资源| 国产91成人在在线播放| 天天操夜夜操av| 台湾色综合娱乐中文网| 欧美一区二区在线观看| 北条麻妃av高潮尖叫在线观看| 1区2区3区在线视频| 久久精品视频在线免费观看| 亚洲xxx自由成熟| 无码免费一区二区三区| 亚洲电影在线| 欧美成人中文字幕| 永久免费观看片现看| 女仆av观看一区| 欧美一级夜夜爽| 奇米影音第四色| 亚洲精品福利电影| 欧美日韩国产丝袜另类| 777久久精品一区二区三区无码 | 蜜桃视频在线一区| 97香蕉超级碰碰久久免费软件| 多男操一女视频| 日韩av在线中文字幕| 亚洲精品日韩欧美| 一级国产黄色片| 6080成人| 欧美白人最猛性xxxxx69交| 亚洲成人手机在线观看| 日本成人一区二区| 欧美性xxxxxxxx| 无人在线观看的免费高清视频 | 久久精品色图| av一区二区三区| 高清视频一区二区三区| 成人高潮片免费视频| 国产麻豆一精品一av一免费| 成人a在线视频| 97超碰资源站| 国产一区二区三区四区在线观看| 国产精品视频永久免费播放| 久久影视中文字幕| 日韩精品91亚洲二区在线观看| 热久久免费视频精品| 手机在线看片1024| 天堂久久一区二区三区| 国产精品成人国产乱一区| 波多野结衣爱爱| 久久综合综合久久综合| 国产一区视频在线| 999av视频| 丁香婷婷深情五月亚洲| 国产欧美日韩一区二区三区| 少妇人妻精品一区二区三区| 91在线视频在线| 日本一区二区三区免费观看| 番号集在线观看| 椎名由奈av一区二区三区| 国产卡一卡二在线| 久久亚洲资源| 色婷婷av一区| 国产精品一区二区小说| 久久精品九色| 亚洲激情自拍图| 国产一二三四五区| 999精品视频| 久久久视频在线| 男人午夜免费视频| 免费av成人在线| av噜噜色噜噜久久| 免费理论片在线观看播放老| 国产精品久久久久一区| 成年人视频网站免费| 在线看片国产福利你懂的| 欧美性生活一区| 国模无码视频一区| 欧美日一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 日本视频www色| 国产真实乱子伦精品视频| 国产伦精品一区二区三区四区视频| 黑人与亚洲人色ⅹvideos| 亚洲三级在线观看| 国产乱子夫妻xx黑人xyx真爽| 国产成人精品一区二区三区在线 | 亚洲自拍第三页| 美国十次av导航亚洲入口| 尤物九九久久国产精品的特点 | 欧美午夜久久久| 亚洲激情在线看| 日本天堂一区| 久久亚洲一区二区三区四区五区高| 国产在线观看免费视频今夜| 日本欧美一区二区三区乱码| 国产精品毛片一区视频| 91精品国产91久久久久游泳池 | 看亚洲a级一级毛片| 亚洲欧美日韩天堂| 欧美精品一级片| 日本成人在线一区| 久久精品国产一区二区三区日韩| 蜜芽在线免费观看| 日本高清不卡aⅴ免费网站| 女王人厕视频2ⅴk| 四虎成人精品永久免费av九九| 韩日欧美一区二区| 性生交生活影碟片| 1000精品久久久久久久久| 欧美视频第三页| 欧美三级自拍| 午夜精品99久久免费| 国产按摩一区二区三区| 亚洲国产成人在线| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲网址在线观看| 久久在线免费观看视频| 中文字幕码精品视频网站| 26uuu精品一区二区在线观看| 国产精品igao激情视频| 色成人综合网| 在线不卡国产精品| 天堂av免费在线观看| 91看片淫黄大片一级在线观看| 欧美做暖暖视频| 欧美1区2区3| 久久成人精品电影| 国产精品伦理一区| 最新久久zyz资源站| 一区二区免费av| 天天综合一区| 成人久久一区二区| 激情在线小视频| 91精品国产色综合久久不卡蜜臀| 成人欧美一区二区三区黑人一| 日韩国产成人精品| 天堂社区 天堂综合网 天堂资源最新版 | 日韩理论片网站| 亚洲天堂伊人网| 香蕉国产精品| 51蜜桃传媒精品一区二区| a视频在线观看| 日韩一区二区三区免费观看| 日韩视频中文字幕在线观看| 国产精品一品二品| 黄色成人在线免费观看| 国产精品流白浆在线观看| 欧美亚洲黄色| 亚洲美女视频网站| 九九热在线视频播放| www.久久精品| 能在线观看的av| 国产精品片aa在线观看| 国产成人综合精品在线| www日韩tube| 欧美老女人在线| 校园春色 亚洲| 国产成人精品免费| 人人干视频在线| 男男gay无套免费视频欧美| 国产999精品久久久| 国产精品影院在线| 欧美丰满少妇xxxxx高潮对白| 黑人狂躁日本娇小| 国产91精品欧美| 亚洲色欲综合一区二区三区| 国产亚洲电影| 成人有码视频在线播放| 国产精品18在线| 奇米色一区二区| 色乱码一区二区三区熟女| 视频欧美一区| 欧亚精品中文字幕| 色哟哟免费在线观看 | 日本韩国欧美在线观看| 精品一区免费| 99影视tv| 无人区在线高清完整免费版 一区二| 日韩在线小视频| 欧美视频一二区| 欧美日韩午夜精品| 不卡的免费av| 中文字幕一区二区三区精华液 | 国产视频在线观看免费| 亚洲第一激情av| 黄色片网站在线播放| av亚洲产国偷v产偷v自拍| 天堂av在线网站| 亚洲精品日本| 日韩视频在线观看视频| 亚洲永久精品唐人导航网址| 亚洲最大成人在线| 午夜精品成人av| 欧美激情精品久久久久久久变态| 国产黄色在线播放| 精品久久久久久久人人人人传媒| 艳妇乳肉豪妇荡乳av无码福利| 亚洲在线观看免费视频| 黄色av片三级三级三级免费看| 成人精品一区二区三区中文字幕 | 久久免费激情视频| 亚洲精品中文字幕在线观看| www.av天天| www.欧美精品一二区| 下面一进一出好爽视频| 蜜臀久久久久久久| 国产福利一区视频| 香蕉av777xxx色综合一区| 777av视频| 综合激情在线| 中文字幕中文字幕在线中心一区| 奇米色欧美一区二区三区| 国产综合第一页| 91成人午夜| 亚洲一区二区三区乱码aⅴ| 欧美日一区二区三区| 欧洲一区二区视频| 精精国产xxxx视频在线播放| 国产69精品99久久久久久宅男| 国产在线看片| 久久精品视频在线观看| av每日在线更新| 原创国产精品91| 99青草视频在线播放视| 在线观看日韩专区| 草碰在线视频| 中文字幕日本精品| eeuss影院www在线播放| 亚洲午夜久久久久久久| 蜜芽tv福利在线视频| 日韩成人av在线播放| 午夜影院免费体验区| 亚洲国模精品私拍| 婷婷色在线观看| 日韩精品视频三区| 免费在线视频你懂得| 亚洲人成毛片在线播放| 国产在线视频网址| 国产午夜精品美女视频明星a级| 亚洲日本中文字幕在线| 亚洲美女av在线播放| 国产高清在线| 日韩一区视频在线| 国产在线二区| 国自产精品手机在线观看视频| 国产理论在线| 国产成人a亚洲精品| 国内自拍亚洲| 3d动漫啪啪精品一区二区免费| 爱高潮www亚洲精品| 久久综合入口| 欧美日韩老妇| 久久久久久久久影视| 精品电影一区| 日韩手机在线观看视频| 美女在线视频一区| 日韩不卡的av| 91视视频在线观看入口直接观看www| 熟女俱乐部一区二区视频在线| 亚洲国产成人午夜在线一区 | 欧美男男激情freegay| 中文国产成人精品| 50度灰在线| 青草青草久热精品视频在线观看| 欧美日韩精品免费观看视完整| 国产精品久久久久久久美男| 国产精品777777在线播放| 国产精品一码二码三码在线| 神马影视一区二区| 午夜啪啪福利视频| 国产精品三上| 日韩精品aaa| 97久久精品人人做人人爽| 中文字幕91视频| 亚洲成av人片一区二区梦乃| 波多野结衣黄色| 欧美刺激午夜性久久久久久久| 日本一卡二卡四卡精品| 久久福利视频网| 亚洲国产福利| 国产a一区二区| 日韩午夜电影网| 国产免费观看高清视频| 久久99热狠狠色一区二区| www.88av| 亚洲精品伦理在线| 国产乱码77777777| 亚洲国产欧美一区二区三区同亚洲 | 国产毛片久久久久久国产毛片| 久久经典综合| 日本人妻一区二区三区| 国产精品色哟哟网站| 日本在线观看中文字幕| 宅男噜噜噜66一区二区66| 欧美另类自拍| 久久人人爽国产| 国产精品白丝久久av网站| 日韩欧美亚洲日产国| 亚洲精品美女91| 中文字幕永久免费| 17c精品麻豆一区二区免费| www.日韩一区| 日韩精品视频免费专区在线播放| 牛牛精品在线视频| 成人精品视频在线| 国产一区二区三区站长工具| 国产av国片精品| 国产黑丝在线一区二区三区| 少妇高潮惨叫久久久久| 91电影在线观看| 日本在线丨区| 91精品国产网站| 国内精品偷拍| 国产精品一色哟哟| 国模大尺度一区二区三区| 国产又粗又硬视频| 在线观看日韩一区| 国产在线超碰| 国产成人极品视频| 蜜桃视频欧美| 精品一区二区中文字幕| 91亚洲精品久久久蜜桃网站| 精品一区二区三区人妻| 日韩欧美亚洲国产另类 | 68精品久久久久久欧美| 国产精品传媒| 精品少妇一区二区三区在线| 成人av在线播放网址| 日本免费观看视| 国产偷国产偷亚洲清高网站| 亚洲妇女成熟| 欧美精品一区二区三区久久| 久久久成人网| 欧美激情 一区| 欧美日韩亚洲综合| 在线日本视频| 91精品久久久久久久久久另类| 精品午夜久久| 日韩中文字幕a| 亚洲欧美日韩国产成人精品影院| 国产精品无码在线播放| 欧美猛交ⅹxxx乱大交视频| 五月亚洲婷婷| 男人用嘴添女人下身免费视频| 91色九色蝌蚪| 国产精品无码一区| 久热精品视频在线| 高清精品视频| 日本成年人网址| 国产日韩欧美综合在线| 91极品身材尤物theporn| 欧美成人一区二区三区电影| 国产精品115| 日韩中文字幕二区| 中文字幕亚洲综合久久菠萝蜜| 国产伦精品一区二区三区四区| 欧美大片大片在线播放| 欧美日韩夜夜| 亚洲精品自拍网| 一区二区三区美女| 日韩专区一区二区| 国产精品一区二区三区成人| 女生裸体视频一区二区三区| 免费a v网站| 欧美午夜一区二区| 少妇视频在线| 欧美日韩亚洲综合一区二区三区激情在线| 日韩av高清在线观看| 久久国产精品二区| 亚洲人成免费电影| 天堂va欧美ⅴa亚洲va一国产| 99精品在线免费视频| 国产精品久久久久久一区二区三区| aaa级黄色片| 日本在线精品视频| 欧美激情综合| 性猛交娇小69hd| 欧美xxxxx牲另类人与| 国产精品久久久久av电视剧| 精品日韩在线播放| 久久久午夜精品| 国产哺乳奶水91在线播放| 日本中文字幕不卡免费| 欧美黄色一区| 妖精视频在线观看免费 | 日本高清视频在线播放| 国产精品裸体一区二区三区| 美日韩一级片在线观看| 在线观看黄网站|