亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python找出微信上刪除你好友的人腳本寫法

2020-02-15 23:30:14
字體:
供稿:網(wǎng)友

相信大家在微信上一定被上面的這段話刷過屏,群發(fā)消息應(yīng)該算是微信上流傳最廣的找到刪除好友的方法了。但群發(fā)消息不僅僅會把通訊錄里面所有的好友騷擾一遍,而且你還得挨個刪除好幾百個聊天記錄,回復(fù)大家的疑問和鄙視。作為一個互聯(lián)網(wǎng)從業(yè)者,除了群發(fā)消息就不能有更高效、不打擾好友的方式么?

答案是當(dāng)然有,本人的微:1613161916可以一起討論python,還有許多Python資料可以發(fā)送。

微信在拉好友進群聊的時候,如果這個人刪除了你好友的話,會提示你一下「請先發(fā)送朋友驗證申請給某某,對方將你加為微信朋友后,你才能邀請其加入群聊?!褂修k法了,那我把微信好友拉一個大群里面,然后默默的刪掉微信群不就好了么。

于是 Github 上就有一位叫 0x5e 的開發(fā)者寫了這么一個 Python 腳本來代替你手動拉群和踢人。經(jīng)過筆者測試,目前只能支持 Mac 的操作系統(tǒng)。在此之前,筆者在稀土掘金上先放出了Github的方法,這里再詳細提下。

在 0x5e 的 Github 代碼倉庫描述里面,他具體的實現(xiàn)步驟是用 Python 腳本處理網(wǎng)頁版微信的拉群、踢人操作。具體的步驟如下:

下載代碼文件 wdf.py 打開 Terminal 輸入:python 然后拖動剛才下載的 wdf.py 到 Terminal 窗后回車。命令格式類似: python wdf.py 接下來按步驟掃碼操作即可;

查詢結(jié)果可能會引起一些心理上的不適,請小心使用。

筆者測試了兩次,這個 Python 腳本還是有一些小問題,歡迎開發(fā)者們給原作者發(fā) Pull Request 完善:

兩次結(jié)果稍有出入,可能是微信網(wǎng)頁版返回數(shù)據(jù)的問題 最終在微信會遺留一個只有自己的群組,需要手動刪除 此腳本暫時不支持查找被拉黑的情況

源碼

#!/usr/bin/env python# coding=utf-8 from __future__ import print_function import osimport requestsimport reimport timeimport xml.dom.minidomimport jsonimport sysimport mathimport subprocessimport sslimport threading DEBUG = False MAX_GROUP_NUM = 2 # 每組人數(shù)INTERFACE_CALLING_INTERVAL = 5 # 接口調(diào)用時間間隔, 間隔太短容易出現(xiàn)"操作太頻繁", 會被限制操作半小時左右MAX_PROGRESS_LEN = 50 QRImagePath = os.path.join(os.getcwd(), 'qrcode.jpg') tip = 0uuid = '' base_uri = ''redirect_uri = ''push_uri = '' skey = ''wxsid = ''wxuin = ''pass_ticket = ''deviceId = 'e000000000000000' BaseRequest = {} ContactList = []My = []SyncKey = [] try:  xrange  range = xrangeexcept:  # python 3  pass  def responseState(func, BaseResponse):  ErrMsg = BaseResponse['ErrMsg']  Ret = BaseResponse['Ret']  if DEBUG or Ret != 0:    print('func: %s, Ret: %d, ErrMsg: %s' % (func, Ret, ErrMsg))   if Ret != 0:    return False   return True   def getUUID():  global uuid   url = 'https://login.weixin.qq.com/jslogin'  params = {    'appid': 'wx782c26e4c19acffb',    'fun': 'new',    'lang': 'zh_CN',    '_': int(time.time()),  }   r= myRequests.get(url=url, params=params)  r.encoding = 'utf-8'  data = r.text   # print(data)   # window.QRLogin.code = 200; window.QRLogin.uuid = "oZwt_bFfRg==";  regx = r'window.QRLogin.code = (/d+); window.QRLogin.uuid = "(/S+?)"'  pm = re.search(regx, data)   code = pm.group(1)  uuid = pm.group(2)   if code == '200':    return True   return False  def showQRImage():  global tip   url = 'https://login.weixin.qq.com/qrcode/' + uuid  params = {    't': 'webwx',    '_': int(time.time()),  }   r = myRequests.get(url=url, params=params)   tip = 1   f = open(QRImagePath, 'wb')  f.write(r.content)  f.close()  time.sleep(1)   if sys.platform.find('darwin') >= 0:    subprocess.call(['open', QRImagePath])  elif sys.platform.find('linux') >= 0:    subprocess.call(['xdg-open', QRImagePath])  else:    os.startfile(QRImagePath)   print('請使用微信掃描二維碼以登錄')  def waitForLogin():  global tip, base_uri, redirect_uri, push_uri   url = 'https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=%s&uuid=%s&_=%s' % (    tip, uuid, int(time.time()))   r = myRequests.get(url=url)  r.encoding = 'utf-8'  data = r.text   # print(data)   # window.code=500;  regx = r'window.code=(/d+);'  pm = re.search(regx, data)   code = pm.group(1)   if code == '201': # 已掃描    print('成功掃描,請在手機上點擊確認以登錄')    tip = 0  elif code == '200': # 已登錄    print('正在登錄...')    regx = r'window.redirect_uri="(/S+?)";'    pm = re.search(regx, data)    redirect_uri = pm.group(1) + '&fun=new'    base_uri = redirect_uri[:redirect_uri.rfind('/')]     # push_uri與base_uri對應(yīng)關(guān)系(排名分先后)(就是這么奇葩..)    services = [      ('wx2.qq.com', 'webpush2.weixin.qq.com'),      ('qq.com', 'webpush.weixin.qq.com'),      ('web1.wechat.com', 'webpush1.wechat.com'),      ('web2.wechat.com', 'webpush2.wechat.com'),      ('wechat.com', 'webpush.wechat.com'),      ('web1.wechatapp.com', 'webpush1.wechatapp.com'),    ]    push_uri = base_uri    for (searchUrl, pushUrl) in services:      if base_uri.find(searchUrl) >= 0:        push_uri = 'https://%s/cgi-bin/mmwebwx-bin' % pushUrl        break     # closeQRImage    if sys.platform.find('darwin') >= 0: # for OSX with Preview      os.system("osascript -e 'quit app /"Preview/"'")  elif code == '408': # 超時    pass  # elif code == '400' or code == '500':   return code  def login():  global skey, wxsid, wxuin, pass_ticket, BaseRequest   r = myRequests.get(url=redirect_uri)  r.encoding = 'utf-8'  data = r.text   # print(data)   doc = xml.dom.minidom.parseString(data)  root = doc.documentElement   for node in root.childNodes:    if node.nodeName == 'skey':      skey = node.childNodes[0].data    elif node.nodeName == 'wxsid':      wxsid = node.childNodes[0].data    elif node.nodeName == 'wxuin':      wxuin = node.childNodes[0].data    elif node.nodeName == 'pass_ticket':      pass_ticket = node.childNodes[0].data   # print('skey: %s, wxsid: %s, wxuin: %s, pass_ticket: %s' % (skey, wxsid,  # wxuin, pass_ticket))   if not all((skey, wxsid, wxuin, pass_ticket)):    return False   BaseRequest = {    'Uin': int(wxuin),    'Sid': wxsid,    'Skey': skey,    'DeviceID': deviceId,  }   return True  def webwxinit():   url = (base_uri +     '/webwxinit?pass_ticket=%s&skey=%s&r=%s' % (      pass_ticket, skey, int(time.time())) )  params = {'BaseRequest': BaseRequest }  headers = {'content-type': 'application/json; charset=UTF-8'}   r = myRequests.post(url=url, data=json.dumps(params),headers=headers)  r.encoding = 'utf-8'  data = r.json()   if DEBUG:    f = open(os.path.join(os.getcwd(), 'webwxinit.json'), 'wb')    f.write(r.content)    f.close()    # print(data)   global ContactList, My, SyncKey  dic = data  ContactList = dic['ContactList']  My = dic['User']  SyncKey = dic['SyncKey']   state = responseState('webwxinit', dic['BaseResponse'])  return state  def webwxgetcontact():   url = (base_uri +     '/webwxgetcontact?pass_ticket=%s&skey=%s&r=%s' % (      pass_ticket, skey, int(time.time())) )  headers = {'content-type': 'application/json; charset=UTF-8'}    r = myRequests.post(url=url,headers=headers)  r.encoding = 'utf-8'  data = r.json()   if DEBUG:    f = open(os.path.join(os.getcwd(), 'webwxgetcontact.json'), 'wb')    f.write(r.content)    f.close()   # print(data)   dic = data  MemberList = dic['MemberList']   # 倒序遍歷,不然刪除的時候出問題..  SpecialUsers = ["newsapp", "fmessage", "filehelper", "weibo", "qqmail", "tmessage", "qmessage", "qqsync", "floatbottle", "lbsapp", "shakeapp", "medianote", "qqfriend", "readerapp", "blogapp", "facebookapp", "masssendapp",          "meishiapp", "feedsapp", "voip", "blogappweixin", "weixin", "brandsessionholder", "weixinreminder", "wxid_novlwrv3lqwv11", "gh_22b87fa7cb3c", "officialaccounts", "notification_messages", "wxitil", "userexperience_alarm"]  for i in range(len(MemberList) - 1, -1, -1):    Member = MemberList[i]    if Member['VerifyFlag'] & 8 != 0: # 公眾號/服務(wù)號      MemberList.remove(Member)    elif Member['UserName'] in SpecialUsers: # 特殊賬號      MemberList.remove(Member)    elif Member['UserName'].find('@@') != -1: # 群聊      MemberList.remove(Member)    elif Member['UserName'] == My['UserName']: # 自己      MemberList.remove(Member)   return MemberList  def createChatroom(UserNames):  MemberList = [{'UserName': UserName} for UserName in UserNames]   url = (base_uri +     '/webwxcreatechatroom?pass_ticket=%s&r=%s' % (      pass_ticket, int(time.time())) )  params = {    'BaseRequest': BaseRequest,    'MemberCount': len(MemberList),    'MemberList': MemberList,    'Topic': '',  }  headers = {'content-type': 'application/json; charset=UTF-8'}   r = myRequests.post(url=url, data=json.dumps(params),headers=headers)  r.encoding = 'utf-8'  data = r.json()   # print(data)   dic = data  ChatRoomName = dic['ChatRoomName']  MemberList = dic['MemberList']  DeletedList = []  BlockedList = []  for Member in MemberList:    if Member['MemberStatus'] == 4: # 被對方刪除了      DeletedList.append(Member['UserName'])    elif Member['MemberStatus'] == 3: # 被加入黑名單      BlockedList.append(Member['UserName'])   state = responseState('createChatroom', dic['BaseResponse'])   return ChatRoomName, DeletedList, BlockedList  def deleteMember(ChatRoomName, UserNames):  url = (base_uri +     '/webwxupdatechatroom?fun=delmember&pass_ticket=%s' % (pass_ticket) )  params = {    'BaseRequest': BaseRequest,    'ChatRoomName': ChatRoomName,    'DelMemberList': ','.join(UserNames),  }  headers = {'content-type': 'application/json; charset=UTF-8'}   r = myRequests.post(url=url, data=json.dumps(params),headers=headers)  r.encoding = 'utf-8'  data = r.json()   # print(data)   dic = data   state = responseState('deleteMember', dic['BaseResponse'])  return state  def addMember(ChatRoomName, UserNames):  url = (base_uri +     '/webwxupdatechatroom?fun=addmember&pass_ticket=%s' % (pass_ticket) )  params = {    'BaseRequest': BaseRequest,    'ChatRoomName': ChatRoomName,    'AddMemberList': ','.join(UserNames),  }  headers = {'content-type': 'application/json; charset=UTF-8'}   r = myRequests.post(url=url, data=json.dumps(params),headers=headers)  r.encoding = 'utf-8'  data = r.json()   # print(data)   dic = data  MemberList = dic['MemberList']  DeletedList = []  BlockedList = []  for Member in MemberList:    if Member['MemberStatus'] == 4: # 被對方刪除了      DeletedList.append(Member['UserName'])    elif Member['MemberStatus'] == 3: # 被加入黑名單      BlockedList.append(Member['UserName'])   state = responseState('addMember', dic['BaseResponse'])   return DeletedList, BlockedList  def syncKey():  SyncKeyItems = ['%s_%s' % (item['Key'], item['Val'])          for item in SyncKey['List']]  SyncKeyStr = '|'.join(SyncKeyItems)  return SyncKeyStr  def syncCheck():  url = push_uri + '/synccheck?'  params = {    'skey': BaseRequest['Skey'],    'sid': BaseRequest['Sid'],    'uin': BaseRequest['Uin'],    'deviceId': BaseRequest['DeviceID'],    'synckey': syncKey(),    'r': int(time.time()),  }   r = myRequests.get(url=url,params=params)  r.encoding = 'utf-8'  data = r.text   # print(data)   # window.synccheck={retcode:"0",selector:"2"}  regx = r'window.synccheck={retcode:"(/d+)",selector:"(/d+)"}'  pm = re.search(regx, data)   retcode = pm.group(1)  selector = pm.group(2)   return selector  def webwxsync():  global SyncKey   url = base_uri + '/webwxsync?lang=zh_CN&skey=%s&sid=%s&pass_ticket=%s' % (    BaseRequest['Skey'], BaseRequest['Sid'], quote_plus(pass_ticket))  params = {    'BaseRequest': BaseRequest,    'SyncKey': SyncKey,    'rr': ~int(time.time()),  }  headers = {'content-type': 'application/json; charset=UTF-8'}   r = myRequests.post(url=url, data=json.dumps(params))  r.encoding = 'utf-8'  data = r.json()   # print(data)   dic = data  SyncKey = dic['SyncKey']   state = responseState('webwxsync', dic['BaseResponse'])  return state  def heartBeatLoop():  while True:    selector = syncCheck()    if selector != '0':      webwxsync()    time.sleep(1)  def main():  global myRequests   if hasattr(ssl, '_create_unverified_context'):    ssl._create_default_https_context = ssl._create_unverified_context   headers = {'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36'}  myRequests = requests.Session()  myRequests.headers.update(headers)    if not getUUID():    print('獲取uuid失敗')    return   print('正在獲取二維碼圖片...')  showQRImage()   while waitForLogin() != '200':    pass   os.remove(QRImagePath)   if not login():    print('登錄失敗')    return   if not webwxinit():    print('初始化失敗')    return   MemberList = webwxgetcontact()   print('開啟心跳線程')  threading.Thread(target=heartBeatLoop)   MemberCount = len(MemberList)  print('通訊錄共%s位好友' % MemberCount)   ChatRoomName = ''  result = []  d = {}  for Member in MemberList:    d[Member['UserName']] = (Member['NickName'], Member['RemarkName'])  print('開始查找...')  group_num = int(math.ceil(MemberCount / float(MAX_GROUP_NUM)))  for i in range(0, group_num):    UserNames = []    for j in range(0, MAX_GROUP_NUM):      if i * MAX_GROUP_NUM + j >= MemberCount:        break      Member = MemberList[i * MAX_GROUP_NUM + j]      UserNames.append(Member['UserName'])     # 新建群組/添加成員    if ChatRoomName == '':      (ChatRoomName, DeletedList, BlockedList) = createChatroom(        UserNames)    else:      (DeletedList, BlockedList) = addMember(ChatRoomName, UserNames)     # todo BlockedList 被拉黑列表     DeletedCount = len(DeletedList)    if DeletedCount > 0:      result += DeletedList     # 刪除成員    deleteMember(ChatRoomName, UserNames)     # 進度條    progress = MAX_PROGRESS_LEN * (i + 1) / group_num    print('[', '#' * int(progress), '-' * int(MAX_PROGRESS_LEN - progress), ']', end=' ')    print('新發(fā)現(xiàn)你被%d人刪除' % DeletedCount)    for i in range(DeletedCount):      if d[DeletedList[i]][1] != '':        print('%s(%s)' % (d[DeletedList[i]][0],d[DeletedList[i]][1]))      else:        print(d[DeletedList[i]][0])     if i != group_num - 1:      print('正在繼續(xù)查找,請耐心等待...')      # 下一次進行接口調(diào)用需要等待的時間      time.sleep(INTERFACE_CALLING_INTERVAL)  # todo 刪除群組   print('/n結(jié)果匯總完畢,20s后可重試...')  resultNames = []  for r in result:    if d[r][1] != '':      resultNames.append('%s(%s)' % (d[r][0],d[r][1]))    else:      resultNames.append(d[r][0])   print('---------- 被刪除的好友列表(共%d人) ----------' % len(result))  # 過濾emoji  resultNames = list(map(lambda x: re.sub(r'<span.+/span>', '', x), resultNames))  if len(resultNames):    print('/n'.join(resultNames))  else:    print("無")  print('---------------------------------------------')  # windows下編碼問題修復(fù)# http://blog.csdn.net/heyuxuanzee/article/details/8442718 class UnicodeStreamFilter:   def __init__(self, target):    self.target = target    self.encoding = 'utf-8'    self.errors = 'replace'    self.encode_to = self.target.encoding   def write(self, s):    if type(s) == str:      try:        s = s.decode('utf-8')      except:        pass    s = s.encode(self.encode_to, self.errors).decode(self.encode_to)    self.target.write(s) if sys.stdout.encoding == 'cp936':  sys.stdout = UnicodeStreamFilter(sys.stdout) if __name__ == '__main__':   print('本程序的查詢結(jié)果可能會引起一些心理上的不適,請小心使用...')  print('1小時內(nèi)只能使用一次,否則會因操作繁忙阻止建群')  main()  print('回車鍵退出...')  input()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久久高清视频| 免费看a级黄色片| 久久激情视频| 91在线看网站| 日韩精品一区二区三区蜜臀| 免费av观看网站| 亚洲www在线观看| 99久久久国产精品无码免费| 国产一级粉嫩xxxx| 免费黄色成年网站| 久久九九99| 日韩av电影在线免费播放| 色老板在线观看| 亚洲综合大片69999| 国产91大片| 日韩亚洲欧美中文在线| 在线看女人毛片| 久久精品色欧美aⅴ一区二区| av在线理伦电影| 欧美 日韩 亚洲 一区| 国产女主播在线播放| 午夜裸体女人视频网站在线观看| 人妻一区二区三区| 日韩亚洲视频| 精精国产xxxx视频在线| 在线免费日韩片| 91网址在线播放| 国产精品久久久免费视频| wwwxx日本| 三年中国中文在线观看免费播放| 直接在线观看的三级网址| 国产卡一卡二卡三| 超碰在线一区二区三区| 涩涩涩视频在线观看| 粉嫩av免费一区二区三区| 麻豆久久一区二区| 一色屋精品亚洲香蕉网站| 国产精品一区在线观看你懂的| 污片在线免费看| 国产亚洲欧美日韩日本| 免费在线观看h| 国产一区二区福利视频| 久艹视频在线免费观看| 色屁屁影院www国产高清麻豆| 亚洲一区二区三区久久久| 无码任你躁久久久久久老妇| 中文字幕第三区| 精品国产区在线| 中文av免费观看| 亚洲成人av观看| 国产精久久久久久| 精品国产91久久久久久久妲己| 免费在线观看a级片| 成人精品国产一区二区4080| 蜜臀久久久99精品久久久久久| 精品卡一卡卡2卡3网站| 奇米777四色影视在线看| 无码人妻精品一区二区三| 国产欧美一区二区精品性色超碰| 五月婷婷一区二区三区| 精品久久久久久久久久久aⅴ| 亚洲色图另类专区| 一区二区三区网站| 国产精一品亚洲二区在线视频| 成人毛片一区二区三区| 天天操天天射天天插| 国产理论视频在线观看| 久久精品女同亚洲女同13| 成人免费大片黄在线播放| 日韩av在线导航| 一区二区三区四区在线免费观看| 国产原创一区| 日韩一区二区久久久| 在线看的网站你懂| 91成人超碰| 丰满熟女人妻一区二区三区| 国内免费久久久久久久久久久| 精品偷拍各种wc美女嘘嘘| 日韩欧美一区二区三区在线视频| 久久93精品国产91久久综合| 午夜成人鲁丝片午夜精品| 亚洲天堂中文在线| 国产剧情一区二区三区| 国产高清在线免费| 91嫩草|国产丨精品入口| 国产99久久久久| 成人一区二区三区视频在线观看| 久久久久久久久电影| 亚洲在线观看av| 丁香综合五月| 九色综合国产一区二区三区| 亚洲最新视频在线观看| 国产精品国产自产拍在线| 毛片手机在线观看| 中文字幕一区二区三区久久网站| 亚洲国产成人av网| 国产美女极品在线| 国内福利写真片视频在线| 污污的网站18| 国产一二三区精品视频| 在线电影院国产精品| 欧美国产在线电影| 日韩在线中文字| 法国空姐电影在线观看| 日韩一区av在线| 日韩中文字幕免费观看| 国产视频一区二区不卡| 国产欧美一区二区三区四区| xxxxx.日韩| 中文字幕一区二区三区不卡| 无码人妻精品一区二区50| 久久99久久精品| 国产美女精品免费电影| 精品久久人妻av中文字幕| 天堂电影在线| 天堂中文视频在线| 精品捆绑调教一区二区三区| 人人草人人干| 国内精品久久久久久不卡影院| 精品欧美一区二区久久久久| www.91香蕉视频| ww久久中文字幕| 2024亚洲男人天堂| 99热在线免费观看| 国产精品专区一| 人妻无码一区二区三区久久99| 女人帮男人橹视频播放| 成人av资源网站| 亚洲午夜精品视频| 国产精品久久久久久久午夜| 国产丝袜欧美中文另类| 另类的小说在线视频另类成人小视频在线| 中文字幕在线观看一区二区三区| 日韩欧美中文字幕一区二区| 午夜伦伦电影理论片费看| 欧美xxxx18性欧美| 日本一区二区在线看| 国产精品无码一区二区在线| 先锋影音av中文资源| 91精品国产色综合久久久蜜香臀| 加勒比海盗1在线观看免费国语版| 一本色道久久综合亚洲| 黄网站色视频免费观看| 亚州av乱码久久精品蜜桃| 国产传媒久久文化传媒| www.色在线| 久艹在线播放| 精品视频网站| 亚洲高清av在线| 久久精品免视看| 国产视频精品自拍| 久久久久久久久久亚洲| 人妖欧美一区二区| 亚洲黄色小说视频| 久久久久久亚洲综合| 亚洲AV无码成人精品区东京热| 欧美精品一区二区三区很污很色的| 日本福利视频| 国产高潮呻吟久久久| 免费能直接在线观看黄的视频| 91夜夜蜜桃臀一区二区三区| 国产精品一区二区三区免费观看| 精品电影一区二区三区| 亚洲欧美一区在线| 欧美r级在线观看| 国产精品理论在线观看| 国产一区二区亚洲| 偷偷www综合久久久久久久| 麻豆视频在线免费观看| 在线免费看黄色片| 天天亚洲美女在线视频| 伊人久久久久久久久久久久久| 国产精品成人一区二区三区吃奶| 久色乳综合思思在线视频| 香蕉久久国产av一区二区| 免费成人深夜夜行网站| 亚洲精品久久久久久动漫器材一区| 激情一区二区| 免费在线观看成人| h视频在线免费观看| 色综合网站在线| 久久综合九色欧美综合狠狠| 99re在线观看视频| 日b视频免费观看| 看女生喷水的网站在线观看| 五月天av在线| 国产深夜福利| 亚洲人成人无码网www国产| 欧美激情国产精品| 国产精品免费网站在线观看| 精品国产一区二区亚洲人成毛片| 日韩欧美国产激情| 国产精品福利在线观看播放| 国产精品麻豆免费版现看视频| 亚洲xxxx3d动漫| 国产在线精品一区二区不卡了| 黄色三级在线| 日韩国产一二三区| 天天操天天射天天爽| 91亚洲精品一区| 久久伊人一区| 久久精品72免费观看| 色欲色香天天天综合网www| av大大超碰在线| 日韩精品一区二区三区四| 影音先锋可以看的网站| 老司机激情视频| 精品久久久久久中文字幕动漫| 牛人国产偷窥女洗浴在线观看| 97精品人妻一区二区三区在线| 99视频精品在线| 四虎国产精品成人永久免费影视| 国产剧情日韩欧美| 精品无码黑人又粗又大又长| 久久91亚洲精品中文字幕| 欧美成人午夜做爰视频在线观看| 日韩av视屏| 日韩精品专区在线影院重磅| 亚洲18色成人| 美女一区二区三区在线观看| 亚洲欧洲日产国码无码久久99| 亚洲a v网站| 国产美女永久无遮挡| 中文字幕永久免费视频| 看黄色免费网站| 在线播放豆国产99亚洲| 国产精品成人国产乱一区| 在线中文字幕-区二区三区四区| 亚洲小说区图片| caoporn国产| 欧美性欧美巨大黑白大战| 欧美日韩123| ass极品水嫩小美女ass| 日本三级日本三级日本三级极| 国产又粗又猛又爽视频| 亚洲天堂中文字幕在线| 交视频在线观看国产| 91动漫免费网站| 国产免费拔擦拔擦8x在线播放| 国产亚洲日本欧美韩国| 国产永久免费高清在线观看| 天天干天天色综合| 污污污污污污www网站免费| 欧美视频免费播放| 日韩视频三区| 亚洲最新无码中文字幕久久| 国产aa精品| 在线视频中文字幕一区二区| 在线观看成人影院| 无码人妻熟妇av又粗又大| 久久婷婷色综合| 亚洲黄色av女优在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 夜夜嗨yeyeh| 在线不卡免费视频| 中文字幕手机在线视频| 欧美日韩一二区| 欧美日韩免费做爰视频| 欧美一区二区福利视频| 日韩电影一区| 99riav国产精品视频| 91制片在线观看| 97成人超碰免| 91免费在线播放| 免费人成黄页网站在线一区二区| 国产精品一区二区中文字幕| 国产性猛交普通话对白| 新67194成人永久网站| 精品国产一区二区三区在线| av在线网页| 中文字幕国产专区| 中文一区在线播放| 久久久久久久久国产精品| 午夜精品一区二区三区在线| 国产精品久久久久7777按摩| 久久99久久久欧美国产| 国产精品一区二区性色av| 三上悠亚国产精品一区二区三区| 亚洲一级黄色片| 成人久久久精品国产乱码一区二区| 好色先生视频污| 欧美特黄aaaaaa| 亚洲欧美日韩综合精品网| 久久久国产综合精品女国产盗摄| 91高跟黑色丝袜呻吟在线观看| 成人在线高清免费| 久久精品人人做人人爽人人| av五月婷婷| 在线成年人视频| 成人免费区一区二区三区| a级在线免费观看| 精品在线免费视频| 欧美国产97人人爽人人喊| 亚洲天堂久久久| 日本欧美亚洲| 草草浮力影院| 四虎永久在线观看免费网站网址| 日本一区精品| 麻豆mv在线看| 中文字幕一区二区三区域| 手机在线看福利| 大荫蒂性生交片| 99久久精品国产色欲| 日本猛少妇色xxxxx免费网站| 成人涩涩小片视频日本| 欧美日韩另类国产亚洲欧美一级| 亚洲黄网在线观看| 欧美成人高清手机在线视频| 4438全国成人免费| 91视频在线免费观看| 91精品国产综合久久香蕉922| 免费免费啪视频在线观播放| 免费高清成人在线| 妖精视频在线观看免费| 免费不卡在线观看av| 男人天堂资源网| 国产在线观看a视频| 欧洲精品一区色| av伦理在线| 国产自产精品| 五月综合激情日本mⅴ| 中文字幕福利视频| 日本在线人成| 欧美黑人巨大精品一区二区| 久久美女精品| yw视频在线观看| av成人毛片| 亚洲图片小说视频|