久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 爬蟲之js逆向解析(滑塊驗證碼)

爬蟲之js逆向解析(滑塊驗證碼)

來源:千鋒教育
發布人:qyf
時間: 2022-09-19 17:44:53 1663580693

  為什么要做逆向

  動態網頁爬蟲一般可分為兩種:Selenium爬取和接口爬取。兩種方式各有優缺點:前者我們己經介紹了selenium的使用和驗證碼、滑塊的使用,其雖然可以很好地處理網頁異步加載問題,但面對大型爬蟲任務時,效率還是比較低的;后者雖然爬取速度較快,但請求參數很可能是動態變化的,這時就需要利用一些前端的知識,重新構造參數,整個過程通常稱為JS逆向。先來看一下簡單的請求:

Picture

  但是往往在我們編寫爬蟲時,可能會碰到以下兩種問題:

  • 所需要爬取的數據在網頁源代碼中并不存在;

  • 點擊下一頁跳轉頁面時,網頁的URL 并沒與發生變化;

  造成這種問題原因是,你所正在爬取的頁面采取了動態加載的方式

  動態加載網頁其顯示的頁面則是經過Javascript處理數據后生成的結果,可以發生改變。

  JavaScript是一種運行在瀏覽器中的解釋型編程語言,JavaScript非常值得學習,它既適合作為學習編程的入門語言,也適合當作日常開發的工作語言。JavaScript可以收集用戶的跟蹤數據,不需要重載頁面即可直接提交表單,可在頁面中嵌入多媒體文件,甚至可以運行網頁游戲等。在很多看起來非常簡單的頁面背后通常使用了許多JavaScript文件。比如:

Picture(1)

  這些數據的來源有多種,可能是經過Javascript計算生成的,也可能是通過Ajax加載的。Ajax = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML),其最大的優點是在不重新加載整個頁面的情況下,可以與服務器交換數據并更新部分網頁的內容。

  逆向工程

  對于動態加載的網頁,我們想要獲取其網頁數據,需要了解網頁是如何加載數據的,該過程就被成為逆向工程。

  對于使用了Ajax 請求技術的網頁,我們可以找到Ajax請求的具體鏈接,直接得到Ajax請求得到的數據。

  需要注意的是,構造Ajax請求有兩種方式:

  • 原生的Ajax請求,會直接創建一個XMLHTTPRequest對象。

  • 調用jQuery的ajax()方法。一般情況下,$.ajax()會返回其創建的XMLHTTPRequest對象;但是,如果$.ajax()的dataType參數指定了為script或jsonp類型,$.ajax()不再返回其創建的XMLHTTPRequest對象。

  JQuery補充:

  在大型互聯網公司的不斷推廣下,JavaScript生態圈也在不斷的完善,各種類庫、API接口層出不窮。

  jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之后又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“Write Less, Do More”,即倡導寫更少的代碼,做更多的事情。

  對于這兩種方式,只要創建返回了XMLHTTPRequest對象,就可以通過Chrome瀏覽器的調試工具在NetWork窗口通過設置XHR過濾條件,直接篩選出Ajax請求的鏈接;如果是$.ajax()并且dataType指定了為script或jsonp,則無法通過這種方式篩選出來。

  案例分析

  這次搞得還是滑塊哦???,話不多說直接開搞數美滑塊,因為小紅書、蘑菇街、脈脈、斗魚等很多都用了數美的驗證碼。整體難度還可以就是動態參數有點東西的呢!

  數美驗證碼官網:https://www.ishumei.com/trial/captcha.html

Picture(2)

  數美滑塊的驗證碼主要的難點有以下幾點:

  request的請求參數,是動態變化的。名稱是動態變化,加密的密鑰也是動態變化的,這就有點難搞了

  每天小版本更新的頻率1-2次,必須得能夠實現完全自動化,否則人工很難及時的調整驗證碼的參數,來不及。

  js里的混淆的變量也是動態變化的

  驗證碼注冊

Picture(3)

  先看一下register

Picture(4)

  下圖是響應結果:bg和fg是驗證碼圖片地址 https://castatic.fengkongcloud.com/bg

Picture(5)

  計算滑塊位置

  根據上一步可以得到驗證圖片的地址。

  驗證碼圖片:https://castatic.fengkongcloud.com/crb/set-000006/v2/07ee613eeb1b43bed7daa24c7b288ea0bg.jpg

  滑塊圖片:https://castatic.fengkongcloud.com/crb/set-000006/v2/07ee613eeb1b43bed7daa24c7b288ea0fg.png

  使用opencv查找并匹配圖像模板中的滑塊。

  需要注意的是,這里是以原圖計算的,而頁面上的圖片大小只有(300,150),(應用不同的產品可能大小也不同)

  所以需要按比例進行縮小或者放大。

  驗證

  對應的api地址是:https://captcha.fengkongcloud.com/ca/v2/fverify?...

Picture(6)

  查詢字符串參數:

Picture(7)

  params參數里的 dv,qe,ou,cf等等,都經過了DES加密,

  破解方式分析

  打開控制臺多看幾遍請求過程,我們基本就明白請求步驟了。具體的分析過程就不再贅述。

  所攜帶的請求參數如下:

  該接口返回的js參數,是下一步需要請求的目標。

  提取js參數

  js地址:https://castatic.fengkongcloud.com/pr/auto-build/v1.0.3-144/captcha-sdk.min.js

  需要提取該js中的參數名,會在最后驗證的時候使用(注:一般情況下參數名不會變),但是這些請求參數都是變化的。

  獲取js的response,搜索上面的參數我們沒有找到,但是發現了倒序的名字

  通過查看調用棧,打斷點,一層層分析,發現js做了ob混淆。

  JS混淆有很多種,這里舉幾個:UglifyJS,JScrambler,jsbeautifier.org,JSDetox,obfuscator.io 等,像下面的代碼就是ob混淆。

  開頭定義了一個大數組,然后對這個大數組里的內容進行位移,再定義一個解密函數。后面大部分的值都調用了這個解密函數,以達到混淆的效果。如果想還原可以使用ob混淆還原工具:https://github.com/DingZaiHub/ob-decrypt

  當然不進行混淆還原也可以通過斷點很快的定位到具體的函數加密的位置

  再次請求走到這里,而這里是一部分的參數的加密,先進去看下它是怎么加密的

  進來了走到這可以看到是DES加密,參數分別是加密的密碼,要加密的參數,后面兩個是數字呢就是模式選擇了,1,0是加密,0,0是解密,在這里是加密。

  我們輸出在console中輸出一下,這四個參數看一下

  那么問題來了,這個密碼"b64ccadf"哪來的呢,別急,我們重新再來一遍!很快我們又進來走到這,_0x1c2865是什么怎么是亂碼的呢?

  console輸出一下看看

Picture(8)

  密碼搞到了,加密方式也曉得了,然后參數一個一個整過去就Ok了。

  返回結果response:

Picture(9)

  message = success,riskLevel=PASS 說明驗證通過

  完整代碼

  """

  數美滑塊驗證碼破解驗證

  """

  import base64

  import json

  import random

  import re

  import time

  from io import BytesIO

  import cv2

  import numpy as np

  import requests

  from pyDes import des, ECB

  CAPTCHA_DISPLAY_WIDTH = 310

  CAPTCHA_DISPLAY_HEIGHT = 155

  p = {}

  def pad(b):

  """

  塊填充

  """

  block_size = 8

  while len(b) % block_size:

  b += b'\0'

  return b

  def split_args(s):

  """

  分割js參數

  """

  r = []

  a = ''

  i = 0

  while i < len(s):

  c = s[i]

  if c == ',' and (a[0] != '\'' or len(a) >= 2 and a[-1] == '\''):

  r.append(a)

  a = ''

  elif c:

  a += c

  i += 1

  r.append(a)

  return r

  def find_arg_names(script):

  """

  通過js解析出參數名

  """

  names = {}

  a = []

  for r in re.findall(r'function\((.*?)\)', script):

  if len(r.split(',')) > 100:

  a = split_args(r)

  break

  r = re.search(r';\)(.*?)\(}', script[::-1]).group(1)

  v = split_args(r[::-1])

  d = r'{%s}' % ''.join([((',' if i else '') + '\'k{}\':([_x0-9a-z]*)'.format(i + 1)) for i in range(15)])

  k = []

  r = re.search(d, script)

  for i in range(15):

  k.append(r.group(i + 1))

  n = int(v[a.index(re.search(r'arguments;.*?,(.*?)\);', script).group(1))], base=16)

  for i in range(n // 2):

  v[i], v[n - 1 - i] = v[n - 1 - i], v[i]

  for i, b in enumerate(k):

  t = v[a.index(b)].strip('\'')

  names['k{}'.format(i + 1)] = t if len(t) > 2 else t[::-1]

  return names

  def get_encrypt_content(message, key, flag):

  """

  接口參數的加密、解密

  """

  des_obj = des(key.encode(), mode=ECB)

  if flag:

  content = pad(str(message).replace(' ', '').encode())

  return base64.b64encode(des_obj.encrypt(content)).decode('utf-8')

  else:

  return des_obj.decrypt(base64.b64decode(message)).decode('utf-8')

  def get_random_ge(distance):

  """

  生成隨機的軌跡

  """

  ge = []

  y = 0

  v = 0

  t = 1

  current = 0

  mid = distance * 3 / 4

  exceed = 20

  z = t

  ge.append([0, 0, 1])

  while current < (distance + exceed):

  if current < mid / 2:

  a = 15

  elif current < mid:

  a = 20

  else:

  a = -30

  a /= 2

  v0 = v

  s = v0 * t + 0.5 * a * (t * t)

  current += int(s)

  v = v0 + a * t

  y += random.randint(-5, 5)

  z += 100 + random.randint(0, 10)

  ge.append([min(current, (distance + exceed)), y, z])

  while exceed > 0:

  exceed -= random.randint(0, 5)

  y += random.randint(-5, 5)

  z += 100 + random.randint(0, 10)

  ge.append([min(current, (distance + exceed)), y, z])

  return ge

  def make_mouse_action_args(distance):

  """

  生成鼠標行為相關的參數

  """

  ge = get_random_ge(distance)

  args = {

  p['k']['k5']: round(distance / CAPTCHA_DISPLAY_WIDTH, 2),

  p['k']['k6']: get_random_ge(distance),

  p['k']['k7']: ge[-1][-1] + random.randint(0, 100),

  p['k']['k8']: CAPTCHA_DISPLAY_WIDTH,

  p['k']['k9']: CAPTCHA_DISPLAY_HEIGHT,

  p['k']['k11']: 1,

  p['k']['k12']: 0,

  p['k']['k13']: -1,

  'act.os': 'android'

  }

  return args

  def get_distance(fg, bg):

  """

  計算滑動距離

  """

  target = cv2.imdecode(np.asarray(bytearray(fg.read()), dtype=np.uint8), 0)

  template = cv2.imdecode(np.asarray(bytearray(bg.read()), dtype=np.uint8), 0)

  result = cv2.matchTemplate(target, template, cv2.TM_CCORR_NORMED)

  _, distance = np.unravel_index(result.argmax(), result.shape)

  return distance

  def update_protocol(protocol_num, js_uri):

  """

  更新協議

  """

  global p

  r = requests.get(js_uri, verify=False)

  names = find_arg_names(r.text)

  p = {

  'i': protocol_num,

  'k': names

  }

  def conf_captcha(organization):

  """

  獲取驗證碼設置

  """

  url = 'https://captcha.fengkongcloud.com/ca/v1/conf'

  args = {

  'organization': organization,

  'model': 'slide',

  'sdkver': '1.1.3',

  'rversion': '1.0.3',

  'appId': 'default',

  'lang': 'zh-cn',

  'channel': 'YingYongBao',

  'callback': 'sm_{}'.format(int(time.time() * 1000))

  }

  r = requests.get(url, params=args, verify=False)

  resp = json.loads(re.search(r'{}\((.*)\)'.format(args['callback']), r.text).group(1))

  return resp

  def register_captcha(organization):

  """

  注冊驗證碼

  """

  url = 'https://captcha.fengkongcloud.com/ca/v1/register'

  args = {

  'organization': organization,

  'channel': 'DEFAULT',

  'lang': 'zh-cn',

  'model': 'slide',

  'appId': 'default',

  'sdkver': '1.1.3',

  'data': '{}',

  'rversion': '1.0.3',

  'callback': 'sm_{}'.format(int(time.time() * 1000))

  }

  r = requests.get(url, params=args, verify=False)

  resp = json.loads(re.search(r'{}\((.*)\)'.format(args['callback']), r.text).group(1))

  return resp

  def verify_captcha(organization, rid, key, distance):

  """

  提交驗證

  """

  url = 'https://captcha.fengkongcloud.com/ca/v2/fverify'

  args = {

  'organization': organization,

  p['k']['k1']: 'default',

  p['k']['k2']: 'YingYongBao',

  p['k']['k3']: 'zh-cn',

  'rid': rid,

  'rversion': '1.0.3',

  'sdkver': '1.1.3',

  'protocol': p['i'],

  'ostype': 'web',

  'callback': 'sm_{}'.format(int(time.time() * 1000))

  }

  args.update(make_mouse_action_args(distance))

  key = get_encrypt_content(key, 'sshummei', 0)

  for k, v in args.items():

  if len(k) == 2:

  args[k] = get_encrypt_content(v, key, 1)

  print(args)

  r = requests.get(url, params=args, verify=False)

  resp = json.loads(re.search(r'{}\((.*)\)'.format(args['callback']), r.text).group(1))

  return resp

  def get_verify(organization):

  """

  進行驗證

  """

  resp = conf_captcha(organization)

  protocol_num = re.search(r'build/v1.0.3-(.*?)/captcha-sdk.min.js', resp['detail']['js']).group(1)

  if not p.get('id') or protocol_num != p['i']:

  update_protocol(protocol_num, ''.join(['https://', resp['detail']['domains'][0], resp['detail']['js']]))

  resp = register_captcha(organization)

  rid = resp['detail']['rid']

  key = resp['detail']['k']

  domain = resp['detail']['domains'][0]

  fg_uri = resp['detail']['fg']

  bg_uri = resp['detail']['bg']

  fg_url = ''.join(['http://', domain, fg_uri])

  bg_url = ''.join(['http://', domain, bg_uri])

  r = requests.get(fg_url, verify=False)

  fg = BytesIO(r.content)

  r = requests.get(bg_url, verify=False)

  bg = BytesIO(r.content)

  distance = get_distance(fg, bg)

  print(distance)

  r = verify_captcha(organization, rid, key, int(distance / 600 * 310))

  return rid, r

  def test():

  organization = 'RlokQwRlVjUrTUlkIqOg'

  # rid是驗證過程中響應的標示,r是最后提交驗證返回的響應

  rid, r = get_verify(organization)

  print(rid, r)

  # riskLevel為PASS說明驗證通過

  if r['riskLevel'] == 'PASS':

  # 具體可抓包查看,接口:/api/sns/v1/system_service/slide_captcha_check

  pass

  if __name__ == '__main__':

  test()

  大家用同樣的方法趕快試一試小紅書,蘑菇街等網站登陸吧!

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 欧美猛少妇性ⅩXXX| 无码人妻精品一区二区三区免费看| 高潮毛片无遮挡高清免费视频| 无码人妻AV一区二区三区蜜臀 | 精品一区二区三区不卡少妇av| 成人欧美一区二区三区视频| 纯肉无遮挡H肉动漫在线观看3D| 人妻系列无码专区免费视频| 国产精品白丝JK白祙喷水视频| 精品人妻无码专区中文字幕| 嗯好爽快点插我视频在线播放| 岛国AV动作片免费观看| 屠户家的小娇花哒哒啦爱你 | 久久久久精品少妇9999| 国产精品导航一区二区| 亚洲日韩精品A∨片无码加勒比| 色欲AⅤ蜜臀AV免费观看| 国产免费拔擦拔擦8X高清在线人| 西方37大但人文艺术任汾A级 | 触及真心在线观看| 琪琪无码午夜伦埋影院| 亚洲AV无码无在线观看红杏| 国产激情无码一区二区APP| 哦┅┅快┅┅用力啊┅┅村妇| 草莓视频免费观看| WW欧日韩视频高清在线| 中国老妇XXXX性开放| 非洲黄网站黑人美女日比群交视频| 女人被狂躁高潮啊的视频在线看| 日韩一区二区三区精品| 色欲AⅤ蜜臀AV免费观看| 破了亲妺妺的处免费视频国产| 玩弄JaPan白嫩少妇一区二区| 无码人妻精品一区二区在线视频| 欧美人与ZOZOXXXX视频| 豆奶视频在线观看免费高清版| 丰满丝袜熟女HD| 余生请多指教在线观看免费全集| 天堂√中文最新版在线中文| 精品多毛少妇人妻AV免费久久 | 久久国产精品无码网站| 久久精品亚洲男人的天堂| 久久精品无码一区二区三区免费| 丰满的少妇愉情HD高清免费| 丝瓜秋葵草莓香蕉榴莲绿| 国产精品成人A区在线观看| YIN荡到骨子里的SAO货| 久久久久高潮毛片免费全部播放| 亚洲AV无码国产一区二区三区| 人妻少妇久久中文字幕| 吃奶呻吟打开双腿做受动态图 | 亚洲无AV码一区二区三区| 亚洲色欲AV无码成人专区| 国产丰满大屁股XXXX| 精品国产AⅤ一区二区三区V视界 | 公车掀起老师裙子进入在线| 欧美黑人一级二级巨大久久天堂| 我的初苞被强开了| 哦┅┅快┅┅用力啊┅┅村妇 | 内地性生生活影视大全| 女人被男人爽到呻吟的视频| 久久久久久国产精品MV| 国产AV无码专区亚洲AV麻豆丫| 秋霞在线看片无码免费| 国精产品一二三区传媒公司| 嗯快点别停舒服好爽受不了了| 在线观看亚洲一区| 欧美无砖专区一中文字| 国产成人亚洲精品无码H| 自慰无码一区二区三区| 欧洲美女与动交ZOZ0Z| 国产免费一区二区三区在线观看| 在线观看亚洲一区| 蜜桃AV一区二区三区| 国产成人欧美精品视频| 久久久久亚洲AV无码永不| 方辰苏婉儿是哪本小说的主角| 无码精品人妻一区二区三区免费看 | 国产AV天堂无码一区二区三区| 高清播放器欧美大片| 日日人人爽人人爽人人片AV| 成人做受120视频试看| 欧美丰满熟妇人妻兽交视频| 未满十八18禁止免费无码网站| 国产裸体XXXX视频在线播放| 性饥渴少妇AV无码毛片| 亚洲AV永久综合在线观看尤物| 精品无码成人片一区二区98| 女人张开腿让男人桶爽的| 欧美日韩视频在线第一区| 色狠狠一区二区三区香蕉| 色哟哟在线视频精品一区| 人妻少妇精品视中文字幕国语| 色婷婷五月综合亚洲影院| 日本高清在线视频WWW色| 性一交一乱一色一视频| 韩漫漫画无遮挡免费| 成人看片黄APP免费看软件 | 丁香五月天天综合亚洲| 无码H黄肉3D动漫在线观看 | 国产精品免费高清在线观看| XXXX娇小10另类| 男人的天堂在线视频| 精品少妇爆乳无码av专用区 | 亚洲AV无码乱码国产精品| 日本熟妇厨房XXXXX乱| 公交车被CAO得合不拢腿视频| 中国东北熟女老太婆内谢| 国产男男GAY做受ⅩXX小说| 亚洲国产欧美在线人成最新| 国产精品导航一区二区| 久久中文字幕无码专区| 色欲AⅤ蜜臀AV免费观看| YW亚洲AV无码乱码在线观看| 国产精品亚洲精品日韩已方 | 免费无码一区二区三区蜜桃大 | 久久99国产精品久久99软件 | 国产精品久久久久久妇女| 色婷婷五月综合亚洲影院| 亚洲AV永久综合在线观看尤物| 国产精品成人一区二区不卡 | 久久久久久精品免费不卡| 亚洲AV无码片一区二区三区| 亚洲AV无码一区二区二三区下载| 伊人久久大香线蕉AV网| 我和岳乱妇三级高清电影| 日本适合十八岁以上的护肤品一 | 国内精品乱码卡一卡2卡三卡新区| 日韩精品无码AV成人观看| 久久成人国产精品| 宝贝你夹得太紧了我都要断了| 永久免费精品精品永久-夜色| 天堂√中文最新版在线| 国产高潮视频在线观看| 日本XXXX色视频在线观看免费,| 色欲网久久久久久久久久久久久久 | 余年周婉小说全文免费阅读完整版| 一本大道东京热无码AV| 好男人好资源在线影视官网| 无码熟妇人妻AⅤ在线影片| 国产猛烈高潮尖叫视频免费| 肉大捧一进一出免费视频| 绯色AV一区二区三区蜜臀| 久久国产精品无码HDAV| 内射人妻无码色AV无码| 欧美〇〇无码黑人大战野结衣| 又粗又硬又大又爽免费视频播放 | 国产精品免费AV片在线观看| 热の无码热の有码热の综合| 色天使亚洲综合一区二区| 亚洲AV无码国产精品夜色午夜| 宝贝你的奶好大我想吃| 亚洲AV无码国产精品夜色午夜| 宝贝你的奶好大我想吃| 制服 丝袜 亚洲 中文 综合| 丰满人妻一区二区三区视频53| 精品无码成人片一区二区| 久久成人A毛片免费观看网站| 欧美大屁股XXXX高跟欧美黑人| 久久久噜噜噜久噜久久| 丰满大屁股熟女偷拍内射| 嗯好爽快点插我视频在线播放| YELLOW在线观看| 强被迫伦姧在线观看无码| 国产精品成人99一区无码| 亚洲AV无码乱码国产精品| 狂野AV人人澡人人添| 中国新疆XXXXXL19D| 好男人日本社区WWW| 亚洲AV无码专区亚洲AV| 国产成人综合精品无码| 精品丝袜人妻久久久久久| 幼儿HIPHOP仙踪林的| 寂寞视频一对一视频APP| 一受多攻同做H嗯啊巨肉| 美女把尿口扒开让男人桶爽| 亚洲AV无码成人精品涩涩| 国产成人亚洲精品青草| 国产精品成人一区二区不卡| 久久精品国产99精品最新| 热の无码热の有码热の综合| 忘忧草影视WWW在线播放网| 锕锕锕锕锕锕锕好疼免费视频| 精品人妻一区二区三区四区九九| 日韩激情无码不卡码| 天天做天天忝天天噜| 色哟哟在线视频精品一区| 他的舌头探入蜜源毛毛虫说说| 一本大道东京热无码AV| 无码人妻精一区二区三区老牛 | 宝贝把腿张得大一点就不痛了| 久久天堂综合亚洲伊人HD妓女| 人妻少妇精品视中文字幕国语| 女人扒开屁股桶爽30分钟| 国产精品亚洲专区无码破解版 | 少妇人妻偷人精系列| 日本极品人妻VIDEOSSEX| 欧美喷潮久久久XXXXX| 国产成人亚洲精品无码AV大片| 综合成人亚洲偷自拍色| 久久亚洲色WWW成人| 锕锕锕锕锕锕锕好痛免费网址| 日本护士HD人XXXX| 亚洲AV无码专区国产乱码不卡 | 日本最新免费二区三区| 国产成人午夜在线视频A站| 少妇人妻偷人精系列| らだ天堂√在线WWW| 国产精品成人VA在线观看| 欧美日韩人妻一区二区| 少妇WWB搡BBBB搡BBBB| 国产成人久久精品| 公和熄洗澡三级中文字幕| 国产精品无码久久久久| 久久久久亚洲AV无码网站| 日本丰满护士爆乳XXXX无遮挡| YW尤物AV无码点击进入福利| 中文字幕日产无线码一区 | 无码人妻精品一区二区三区久久| 国产福利一区二区久久| 残忍开嫩苞疼哭了视频| 潮喷大喷水系列无码久久精品| 国产高清在线A视频大全| 公交车上拨开少妇内裤进入| 国产精品白丝无码ThePorn| 丰满少妇人妻XXXXX| 亚洲AV之男人的天堂| 日韩精品无码区免费专区| 久久无码AV中文出轨人妻| 国产又色又刺激高潮免费视频试看| 久久亚洲AV永久无码精品| 亚洲无AV码一区二区三区| 解开人妻的裙子猛烈进入| 暗交小拗女一区二区| 国内精品乱码卡一卡2卡三卡新区| 国产成人无码精品XXXX网站| 脱岳裙子从后面挺进去| 成 人 黄 色 网站 S色| 国产精品一国产精品一K频道| 无码人妻av一区二区三区毛片 | 日本熟妇XXXX| 亚A∨国AV综AV涩涩涩| 大荫蒂又大又长又硬又紧| 麻豆传播媒体2023最新网站| 亚洲AV自慰白浆喷水网站少妇| 国产精品国语对白露脸在线播放| 内射后入在线观看一区| 日韩亚洲中字无码一区二区三区| 亚洲精品日韩AV专区| 亚洲美女国产精品久久久久久久久| 国产又色又爽又黄的网站在线| 欧美XXXX做受欧美88HD| 极品VPSWINDOWS少妇| 成人无码H免费动漫在线观看| 极品少妇高潮到爽| 差差差软件大全APP推荐免费 | 成在线人免费无码高潮喷水| 女人高潮特级毛片| 儿子比老公更大更硬朗| 亚洲AV无码国产一区二区三区| 性饥渴少妇AV无码毛片| 欧美美女视频熟女一区二区| 国产放荡AV剧情演绎麻豆| 野花AⅤ亚洲高清完整版在线观看| 中文字幕乱妇无码AV在线| 亚洲 日韩 欧美 成人 在线| 亚洲 熟 图片 小说 乱 妇| 久久天天躁夜夜躁狠狠85| 岳两腿之间白嫩的小缝| 欧美美女视频熟女一区二区| 中文字幕AV免费专区| 久久久久亚洲AV综合仓井空| 亚洲国产AV无码专区亚洲AVL| 女人扒开屁股桶爽6O分钟| 亚洲AV无码专区亚洲猫咪| 国产69久久精品成人看| 狠狠亚洲婷婷综合色香五月| 欧美裸体XXXX| 久久久久久久精品国产免费…| 日韩AV无码成人网站| 欧美综合自拍亚洲图久青草| 日本毛多水多做受视频| 色综合久久久无码中文字幕波多 | 综合无码精品人妻一区二区三区| 蜜桃AV秘 无码一区二区三区| 亲孑伦视频一区二区三区| 久久亚洲SM情趣捆绑调教| 韩国青草无码自慰直播专区| 国精产品一区一区三区有限在线 | 内射白浆一区二区在线观看| 少妇高潮惨叫喷水正在播放 | 西方37大但人文艺术任汾A级| 成人Α片免费视频在线观看| 色欲AV永久无码精品无码蜜桃| 人人妻人人澡人人爽人人爱看| 久久久久久精品国产亚洲AV麻豆| 久久97超碰色中文字幕总站| 赤裸羔羊Ⅲ致命快感 电影| 亚洲 熟 图片 小说 乱 妇| 狠狠躁夜夜躁人人爽超碰97香蕉 | 小浪货腿张开水好多呀H| 女人无遮挡无内衣内裤网站| 国产成人涩涩涩视频在线观看| 天天做天天躁天天躁| 丰满老熟妇好大BBBBB| 日本熟少妇裸交ⅩXX视频| 草莓榴莲秋葵绿丝污免费版18| 欧美乱人伦人妻中文字幕| XXXX娇小10另类| 成人美女黄网站18禁免费| 国产成人欧美精品视频| 国产成人精品一区二三区在线观看 | 无码人妻精品一区二区三区66 | 女人无遮挡无内衣内裤网站| 幼儿HIPHOP仙踪林的| 丰满的女房东6剧情| 房东天天吃我奶躁我| 国产乱理伦片A级在线观看| 久久久久久精品免费免费自慰| 亲子乱AⅤ一区二区三区| 任你躁X7X7X7X7在线观看| 色视频综合无码一区二区三区| 中文字幕人妻丝袜成熟乱| 又粗又黄又爽视频免费看| 亚洲AV永久无码一区| 欧美亚洲熟妇少妇性A爱| 老熟妇高潮一区二区三区网| 国产在线无码视频一区二区三区| 久久69老妇伦国产熟女高清| 中文无码人妻影音先锋| 强制高潮18XXXXHD日韩| 成 人 黄 色 网 站 在线观| 熟妇五十路六十路息与子| 国精产品W灬源码1688伊| 午夜私人电影院在线观看| 久久久久久人妻精品一区二区三区 | 亚洲色大成网站WWW永久一区| 热の无码热の有码热の综合| 波多野结衣AV高清一区二区三区| 无码人妻AV一区二区三区蜜臀| 农里粗汉的共妻嗯啊高H| 午夜三级手机在线电影 | 国产传媒精品1区2区3区| 日本少妇人妻XXXXⅩ18| 小洞饿了想吃大香肠喝热牛奶是| 国产高清在线A视频大全| 久久国产精品无码网站| 久久亚洲精品成人AV无码网站| 天堂√中文最新版在线| 日产精品久久久一区二区| 色天使亚洲综合一区二区| 少妇特殊按摩高潮爽翻天| 未满十八18禁止免费无码网站| 国产免费破外女真实出血视频| 久久久久久九九精品久| 丰满老熟妇好大BBBBB| 亚洲精品日韩AV专区| 欧亚精品一区三区免费| 国产精品99久久久久| 亚洲精品456在线播放| 免费观看A级毛片视频| 国产粗语刺激对白ⅩXX| 午夜无码福利伦利理免| 娇小6一8XXXXX| 日韩精品无码一本二本三本| 国产精品盗摄!偷窥盗摄| 亚洲精品无码专区在线播放| 久久久久亚州AⅤ无码专区首| 丰满的人妻沦为玩物在线| 天天拍夜夜添久久精品| 丰满人妻熟妇乱又伦精品| 无码人妻精品一区二区在线视频| 国产免费一区二区三区在线观看| 亚洲色大成网站WWW永久一区| 国产精品免费AV片在线观看| 欧美乱强伦XXXXXXXXXX| 在线播放亚洲第一字幕| 国产福利一区二区精品秒拍| 精品无码人妻一区二区三区四| 上司人妻互换HD无码| 乳荡的小痍子免费播放| 我是你可爱的小猫| 亚洲乱妇老熟女爽到高潮的片| 差差差软件大全APP推荐免费| 国产精品亚洲综合色区韩国| 久久国产精品99久久人人澡| 欧美96在线 | 欧| 国精产品一二二区传媒有哪些| 韩漫漫画无遮挡免费| 成人毛片女人18女人免费| 伊人久久大香线蕉AV网禁呦| 天天做天天躁天天躁| 欧美电影在线观看| 从厨房到餐桌JOYCE| 自拍偷自拍亚洲精品10P| 上司人妻互换HD无码| 国产精品99久久久久| 私密按摩高潮熟女啪啪| 精品无码人妻被多人侵犯aⅴ| 成人精品免费视频在线观看| 色欲AⅤ蜜臀AV在线播放| 国产亚洲午夜高清国产拍精品| 真实国产老熟女粗口对白| 日本护士HD人XXXX| 亚洲AV永久无码精品无码网站| 久久精品人人做人人爽老司机| 岳两腿之间白嫩的小缝| 公交车被CAO得合不拢腿视频| 欧美黑人一级二级巨大久久天堂 | 人与畜禽CORPORATION|