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

如何調用沒有文檔說明的 Web API

開發 前端
調用沒有文檔說明的“秘密” API 很有意思,你需要從你的瀏覽器中把 cookies 復制出來才能訪問。有些讀者問如何實現,因此我打算詳細描述下,其實過程很簡單。我們還會談談在調用沒有文檔說明的 API 時,可能會遇到的錯誤和道德問題。

大家好!幾天前我寫了篇 小型的個人程序 的文章,里面提到了調用沒有文檔說明的“秘密” API 很有意思,你需要從你的瀏覽器中把 cookies 復制出來才能訪問。

有些讀者問如何實現,因此我打算詳細描述下,其實過程很簡單。我們還會談談在調用沒有文檔說明的 API 時,可能會遇到的錯誤和道德問題。

我們用谷歌 Hangouts 舉例。我之所以選擇它,并不是因為這個例子最有用(我認為官方的 API 更實用),而是因為在這個場景中更有用的網站很多是小網站,而小網站的 API 一旦被濫用,受到的傷害會更大。因此我們使用谷歌 Hangouts,因為我 100% 肯定谷歌論壇可以抵御這種試探行為。

我們現在開始!

第一步:打開開發者工具,找一個 JSON 響應

我瀏覽了 ??https://hangouts.google.com??,在 Firefox 的開發者工具中打開“網絡Network”標簽,找到一個 JSON 響應。你也可以使用 Chrome 的開發者工具。

打開之后界面如下圖:

找到其中一條 “類型Type” 列顯示為 ??json?? 的請求。

為了找一條感興趣的請求,我找了好一會兒,突然我找到一條 “people” 的端點,看起來是返回我們的聯系人信息。聽起來很有意思,我們來看一下。

第二步:復制為 cURL

下一步,我在感興趣的請求上右鍵,點擊 “復制Copy” -> “復制為 cURLCopy as cURL”。

然后我把 ??curl?? 命令粘貼到終端并運行。下面是運行結果:

$ curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' -X POST ........ (省略了大量請求標頭)
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.

你可能會想 —— 很奇怪,“二進制的輸出在你的終端上無法正常顯示” 是什么錯誤?原因是,瀏覽器默認情況下發給服務器的請求頭中有 ??Accept-Encoding: gzip, deflate?? 參數,會把輸出結果進行壓縮。

我們可以通過管道把輸出傳遞給 ??gunzip?? 來解壓,但是我們發現不帶這個參數進行請求會更簡單。因此我們去掉一些不相關的請求頭。

第三步:去掉不相關的請求頭

下面是我從瀏覽器獲得的完整 ??curl?? 命令。有很多行!我用反斜杠(??\??)把請求分開,這樣每個請求頭占一行,看起來更清晰:

curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
-X POST \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0' \
-H 'Accept: */*' \
-H 'Accept-Language: en' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'X-HTTP-Method-Override: GET' \
-H 'Authorization: SAPISIDHASH REDACTED' \
-H 'Cookie: REDACTED'
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'X-Goog-AuthUser: 0' \
-H 'Origin: https://hangouts.google.com' \
-H 'Connection: keep-alive' \
-H 'Referer: https://hangouts.google.com/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-site' \
-H 'Sec-GPC: 1' \
-H 'DNT: 1' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
-H 'TE: trailers' \
--data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'

第一眼看起來內容有很多,但是現在你不需要考慮每一行是什么意思。你只需要把不相關的行刪掉就可以了。

我通常通過刪掉某行查看是否有錯誤來驗證該行是不是可以刪除 —— 只要請求沒有錯誤就一直刪請求頭。通常情況下,你可以刪掉 ??Accept*??、??Referer??、??Sec-*??、??DNT??、??User-Agent?? 和緩存相關的頭。

在這個例子中,我把請求刪成下面的樣子:

curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
-X POST \
-H 'Authorization: SAPISIDHASH REDACTED' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Origin: https://hangouts.google.com' \
-H 'Cookie: REDACTED'\
--data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'

這樣我只需要 4 個請求頭:??Authorization??、??Content-Type??、??Origin?? 和 ??Cookie??。這樣容易管理得多。

第四步:在 Python 中發請求

現在我們知道了我們需要哪些請求頭,我們可以把 ??curl?? 命令翻譯進 Python 程序!這部分是相當機械化的過程,目標僅僅是用 Python 發送與 cUrl 相同的數據。

下面是代碼實例。我們使用 Python 的 ??requests?? 包實現了與前面 ??curl?? 命令相同的功能。我把整個長請求分解成了元組的數組,以便看起來更簡潔。

import requests
import urllib

data = [
('personId','101777723'), # I redacted these IDs a bit too
('personId','117533904'),
('personId','111526653'),
('personId','116731406'),
('extensionSet.extensionNames','HANGOUTS_ADDITIONAL_DATA'),
('extensionSet.extensionNames','HANGOUTS_OFF_NETWORK_GAIA_GET'),
('extensionSet.extensionNames','HANGOUTS_PHONE_DATA'),
('includedProfileStates','ADMIN_BLOCKED'),
('includedProfileStates','DELETED'),
('includedProfileStates','PRIVATE_PROFILE'),
('mergedPersonSourceOptions.includeAffinity','CHAT_AUTOCOMPLETE'),
('coreIdParams.useRealtimeNotificationExpandedAcls','true'),
('requestMask.includeField.paths','person.email'),
('requestMask.includeField.paths','person.gender'),
('requestMask.includeField.paths','person.in_app_reachability'),
('requestMask.includeField.paths','person.metadata'),
('requestMask.includeField.paths','person.name'),
('requestMask.includeField.paths','person.phone'),
('requestMask.includeField.paths','person.photo'),
('requestMask.includeField.paths','person.read_only_profile_info'),
('requestMask.includeField.paths','person.organization'),
('requestMask.includeField.paths','person.location'),
('requestMask.includeField.paths','person.cover_photo'),
('requestMask.includeContainer','PROFILE'),
('requestMask.includeContainer','DOMAIN_PROFILE'),
('requestMask.includeContainer','CONTACT'),
('key','REDACTED')
]
response = requests.post('https://people-pa.clients6.google.com/v2/people/?key=REDACTED',
headers={
'X-HTTP-Method-Override': 'GET',
'Authorization': 'SAPISIDHASH REDACTED',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'https://hangouts.google.com',
'Cookie': 'REDACTED',
},
data=urllib.parse.urlencode(data),
)

print(response.text)

我執行這個程序后正常運行 —— 輸出了一堆 JSON 數據!太棒了!

你會注意到有些地方我用 ??REDACTED?? 代替了,因為如果我把原始數據列出來你就可以用我的賬號來訪問谷歌論壇了,這就很不好了。

運行結束!

現在我可以隨意修改 Python 程序,比如傳入不同的參數,或解析結果等。

我不打算用它來做其他有意思的事了,因為我壓根對這個 API 沒興趣,我只是用它來闡述請求 API 的過程。

但是你確實可以對返回的一堆 JSON 做一些處理。

curlconverter 看起來很強大

有人評論說可以使用 ??https://curlconverter.com/?? 自動把 curl 轉換成 Python(和一些其他的語言!),這看起來很神奇 —— 我都是手動轉的。我在這個例子里使用了它,看起來一切正常。

追蹤 API 的處理過程并不容易

我不打算夸大追蹤 API 處理過程的難度 —— API 的處理過程并不明顯!我也不知道傳給這個谷歌論壇 API 的一堆參數都是做什么的!

但是有一些參數看起來很直觀,比如 ??requestMask.includeField.paths=person.email?? 可能表示“包含每個人的郵件地址”。因此我只關心我能看懂的參數,不關心看不懂的。

(理論上)適用于所有場景

可能有人質疑 —— 這個方法適用于所有場景嗎?

答案是肯定的 —— 瀏覽器不是魔法!瀏覽器發送給你的服務器的所有信息都是 HTTP 請求。因此如果我復制了瀏覽器發送的所有的 HTTP 請求頭,那么后端就會認為請求是從我的瀏覽器發出的,而不是用 Python 程序發出的。

當然,我們去掉了一些瀏覽器發送的請求頭,因此理論上后端是可以識別出來請求是從瀏覽器還是 Python 程序發出的,但是它們通常不會檢查。

這里有一些對讀者的告誡 —— 一些谷歌服務的后端會通過令人難以理解(對我來說是)方式跟前端通信,因此即使理論上你可以模擬前端的請求,但實際上可能行不通。可能會遭受更多攻擊的大型 API 會有更多的保護措施。

我們已經知道了如何調用沒有文檔說明的 API。現在我們再來聊聊可能遇到的問題。

問題 1:會話 cookie 過期

一個大問題是我用我的谷歌會話 cookie 作為身份認證,因此當我的瀏覽器會話過期后,這個腳本就不能用了。

這意味著這種方式不能長久使用(我寧愿調一個真正的 API),但是如果我只是要一次性快速抓取一小組數據,那么可以使用它。

問題 2:濫用

如果我正在請求一個小網站,那么我的 Python 腳本可能會把服務打垮,因為請求數超出了它們的處理能力。因此我請求時盡量謹慎,盡量不過快地發送大量請求。

這尤其重要,因為沒有官方 API 的網站往往是些小網站且沒有足夠的資源。

很明顯在這個例子中這不是問題 —— 我認為在寫這篇文章的過程我一共向谷歌論壇的后端發送了 20 次請求,他們肯定可以處理。

如果你用自己的賬號身份過度訪問這個 API 并導致了故障,那么你的賬號可能會被暫時封禁(情理之中)。

我只下載我自己的數據或公共的數據 —— 我的目的不是尋找網站的弱點。

請記住所有人都可以訪問你沒有文檔說明的 API

我認為本文最重要的信息并不是如何使用其他人沒有文檔說明的 API。雖然很有趣,但是也有一些限制,而且我也不會經常這么做。

更重要的一點是,任何人都可以這么訪問你后端的 API!每個人都有開發者工具和網絡標簽,查看你傳到后端的參數、修改它們都很容易。

因此如果一個人通過修改某些參數來獲取其他用戶的信息,這不值得提倡。我認為提供公開 API 的大部分開發者們都知道,但是我之所以再提一次,是因為每個初學者都應該了解。: )

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2009-07-03 13:49:23

Servlet API

2009-07-09 17:47:35

Java Servle

2012-03-08 09:44:41

編程

2023-11-30 09:18:27

2011-09-16 14:21:47

Web API

2009-08-11 14:16:00

Winform調用WEC#

2009-07-26 20:36:07

EclipseJDKAPI幫助文檔

2011-12-14 17:40:02

API

2019-12-23 10:00:52

PythonFlaskPython Web

2017-07-04 08:59:15

APIDevSecOps

2023-11-23 08:00:00

OpenAILangChain

2019-12-30 09:00:00

Web 開發代碼

2024-05-23 11:26:02

2022-08-04 23:41:10

零信任安全API

2020-11-04 13:18:34

WebAPIWeb Share A

2009-12-18 09:38:32

VS建模

2022-02-14 09:49:18

API微服務聚合

2009-12-08 17:48:28

Web Service

2011-07-29 10:02:59

Master DataAPIModel

2022-03-29 09:00:00

Angular框架REST API
點贊
收藏

51CTO技術棧公眾號

成人黄色在线视频| 国产精品免费不| 亚洲一区影音先锋| 久久久久高清| 亚洲精品国产精品国自产网站按摩| 日韩欧美精品综合| 精品奇米国产一区二区三区| 干日本少妇首页| 精品自拍一区| 91免费观看视频| 91久久精品一区| 国产小视频在线免费观看| 成人综合专区| 亚洲精品理论电影| 岛国av免费在线| 午夜影院一区| 亚洲综合视频在线| 亚洲精品一区二区三区四区五区 | 欧美 日本 国产| **精品中文字幕一区二区三区| 亚洲福利国产精品| 在线观看成人av| 欧洲综合视频| av一区二区不卡| 亚洲一区久久久| 在线视频你懂得| 午夜一级久久| 性色av一区二区三区免费| 日韩在线一卡二卡| 精品国产一区探花在线观看| 亚洲电影免费观看高清完整版在线观看| 五月婷婷激情久久| 英国三级经典在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 在线丝袜欧美日韩制服| 国产高清一区在线观看| 91女人视频在线观看| www 成人av com| 91精品视频免费在线观看 | 日韩免费在线免费观看| 久久免费精彩视频| 欧美高清不卡| 粗暴蹂躏中文一区二区三区| 五月天婷婷丁香网| 欧美在线免费看视频| 亚洲欧美日韩区| 欧美做受喷浆在线观看| 久久精品66| 亚洲国产精品人久久电影| 精品国产aⅴ一区二区三区东京热| 电影一区电影二区| 欧美亚日韩国产aⅴ精品中极品| 激情综合在线观看| 日韩伦理在线一区| 日韩欧美999| 农村妇女精品一二区| 自拍视频在线看| 色一情一伦一子一伦一区| 国产在线青青草| 欧美精品日日操| 欧美在线色视频| 爱情岛论坛亚洲首页入口章节| 亚洲日本在线观看视频| 欧美综合色免费| 亚洲妇熟xx妇色黄蜜桃| 国产亚洲观看| 精品粉嫩超白一线天av| xxxxxx黄色| 久久93精品国产91久久综合| 一区二区三区视频免费在线观看| 青青青视频在线播放| 久久精品99久久无色码中文字幕| www.xxxx精品| 久久久久亚洲av无码专区| 亚洲国产高清一区二区三区| 国产91精品黑色丝袜高跟鞋| 婷婷激情五月综合| 狠狠狠色丁香婷婷综合久久五月| 99精品国产高清一区二区| 日韩一区免费视频| 国产免费久久精品| 女女百合国产免费网站| 爱啪啪综合导航| 在线观看不卡视频| a级大片免费看| 日韩福利视频一区| 中文字幕日本精品| 久久高清无码视频| 免费亚洲婷婷| 91最新国产视频| 天天综合天天色| 国产精品五月天| www插插插无码视频网站| 成人免费网站视频| 91精品一区二区三区久久久久久| www.88av| 68国产成人综合久久精品| 性色av一区二区咪爱| 中文字幕乱码一区二区| 懂色av一区二区三区蜜臀| 日本不卡一区二区三区视频| 宅男网站在线免费观看| 色94色欧美sute亚洲13| 色诱av手机版| 日韩亚洲一区在线| 国产69精品久久久久久| 精品久久国产视频| 亚洲国产精品激情在线观看| 97干在线视频| 亚洲美女色播| 国产亚洲成av人片在线观看桃| 久久亚洲成人av| 久久国产精品露脸对白| 欧美精品v日韩精品v国产精品| 国产福利视频在线| 在线国产电影不卡| 在线精品一区二区三区| 欧美日韩网站| 国产精品一区二区久久久| 午夜成人鲁丝片午夜精品| 亚洲欧美日韩电影| 国产高清视频网站| 九九亚洲视频| 992tv成人免费视频| 亚洲成熟女性毛茸茸| 最新中文字幕一区二区三区| 国产视频一区二区三区在线播放 | 日韩av懂色| 亚洲免费影视第一页| 国产五月天婷婷| 国产成人午夜精品影院观看视频 | 国产精品一区二| 国产美女福利在线| 67194成人在线观看| 懂色av蜜桃av| 日韩国产在线观看一区| 免费在线成人av| 亚洲精品88| 精品一区二区电影| av黄色在线播放| 99免费精品视频| 日韩免费视频播放| 欧洲亚洲视频| 欧洲美女7788成人免费视频| 四虎在线观看| 欧美色xxxx| 粉嫩av蜜桃av蜜臀av| 午夜在线视频观看日韩17c| 久久久综合亚洲91久久98| 天堂电影一区| 亚洲欧美国产日韩天堂区| 日韩精品一区二区亚洲av| 91在线看国产| 国模杨依粉嫩蝴蝶150p| 国产一卡不卡| 国产精品一区二区三区毛片淫片 | 久热在线视频观看| 国产精品久久久久蜜臀 | www.亚洲高清| 99精品美女| 99电影网电视剧在线观看| 四季久久免费一区二区三区四区| 日韩视频不卡中文| 亚欧视频在线观看| 久久精品亚洲国产奇米99| 男女无套免费视频网站动漫| 色喇叭免费久久综合网| 91在线无精精品一区二区| 美洲精品一卡2卡三卡4卡四卡| 精品国产一区二区亚洲人成毛片| 日韩激情在线播放| 国产亚洲欧美中文| 午夜大片在线观看| 日韩午夜av| 天天综合色天天综合色hd| 色8久久久久| 国模吧一区二区三区| 黄色av网站在线免费观看| 在线精品观看国产| 九九久久免费视频| 久久综合久久久久88| 久久久久久久久久一区| 精品电影一区| 午夜精品美女久久久久av福利| 精品国产亚洲一区二区三区在线 | 中文字幕国内自拍| 欧美日韩国产欧| 欧美激情第六页| 亚洲爽爆av| 91国产中文字幕| 日本中文字幕视频在线| 亚洲成人xxx| 亚洲天堂网在线视频| 亚洲国产婷婷综合在线精品| 国产又大又粗又爽的毛片| 国产精品123| 凹凸日日摸日日碰夜夜爽1| 一本一道久久a久久精品蜜桃| 国产精品久久久久久久小唯西川| 亚洲不卡系列| 韩国日本不卡在线| 欧美私人网站| 国产婷婷97碰碰久久人人蜜臀 | 国产一区二区在线免费观看| 免费高清在线观看免费| 欧美在线资源| 亚洲国产激情一区二区三区| 精品无人区一区二区| 成人免费激情视频| 日韩欧美精品电影| 久久久久久有精品国产| 男人天堂久久久| 亚洲欧洲美洲在线综合| 囯产精品一品二区三区| 欧美另类videos死尸| 久久久久久少妇| 一二三区精品福利视频| 人人艹在线视频| 91麻豆福利精品推荐| 女性生殖扒开酷刑vk| 国产一区二区三区四区在线观看| 少妇一级淫免费放| 久久青草久久| 狠狠爱免费视频| 亚洲激情在线| 欧美中文字幕在线观看视频| 亚洲精品网址| 欧美日韩亚洲国产成人| 欧美aaaaaaaaaaaa| 深夜福利成人| jizzjizz欧美69巨大| 蜜桃导航-精品导航| 激情小说亚洲图片| 国产精品v欧美精品v日韩| 精品一区二区三区中文字幕在线| 国产精品专区一| 亚洲不卡系列| 国产精品自在线| 成人日韩av| 国产精品一二三在线| 高清成人在线| 国产精品久久二区| a∨色狠狠一区二区三区| 国产精品久久久久久久久久免费 | 噜噜噜躁狠狠躁狠狠精品视频| 亚洲国产精品成人天堂| 在线观看一区| 国产亚洲黄色片| 亚洲国产裸拍裸体视频在线观看乱了中文 | 一区二区中文字| 特级西西444| 欧美激情综合色综合啪啪| 91亚洲精品国产| 亚洲福利专区| 黄色影院一级片| 久久久青草婷婷精品综合日韩| 久久久精品在线视频| 久久久久久黄| 99sesese| 国产成人自拍网| 国产 xxxx| 久久久一区二区| 青青青视频在线播放| 亚洲女同一区二区| 日韩毛片在线播放| 日本高清不卡在线观看| 中文在线观看av| 欧美一区二区三区成人| 欧美一级免费片| 亚洲色图国产精品| 色欧美激情视频在线| 欧美激情视频网址| 不卡av播放| 91精品久久久久久久久青青| 一区二区免费| 欧美日韩最好看的视频| 久久久久亚洲| 妺妺窝人体色www在线小说| 日韩va亚洲va欧美va久久| 国产免费中文字幕| 成人av电影免费观看| 国产成人免费观看网站| 亚洲免费av观看| 中文字幕在线欧美| 欧美一区二区三区免费视频| 人操人视频在线观看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | caopeng在线| 欧美一区二区三区免费观看| 亚洲伦理久久| 欧美亚洲精品日韩| 欧美精品1区| 国产无套粉嫩白浆内谢的出处| 国产综合一区二区| 性欧美13一14内谢| 亚洲男女毛片无遮挡| 无码无套少妇毛多18pxxxx| 日韩三级视频在线看| 国产精品影院在线| 欧美精品久久久久久久久| 国产伊人久久| 欧美lavv| 亚洲日本国产| 亚洲av毛片在线观看| 亚洲国产激情av| 91精品国产乱码在线观看| 欧美一级理论片| 97电影在线看视频| 日韩av电影国产| 国产福利一区二区精品秒拍| 亚洲资源视频| 丝袜亚洲另类欧美| 老熟妇精品一区二区三区| 亚洲精品中文在线影院| 中文字幕在线观看1| 国产视频欧美视频| 97人澡人人添人人爽欧美| 91精品国产99久久久久久红楼| 成人影院在线| 欧美激情在线有限公司| 一级特黄aaa| 亚洲欧美日韩综合| 天堂电影一区| 国产精品久久久久久久小唯西川| 91成人超碰| 污色网站在线观看| 国产片一区二区三区| 综合网在线观看| 日韩精品在线免费播放| 在线免费av导航| 成人网中文字幕| 色999日韩| 污污网站免费观看| 国产欧美日本一区视频| 精品成人无码久久久久久| 亚洲九九九在线观看| 国产在线天堂www网在线观看| 国产麻豆乱码精品一区二区三区 | 欧美猛男性生活免费| 国产精品一区二区美女视频免费看 | av在线免费一区| 国产精品久久99久久| 黑人操亚洲人| 超碰在线97免费| 国产精品伦理在线| 一级特黄aaa大片| 久久精品夜夜夜夜夜久久| 福利一区二区免费视频| 亚洲高清不卡一区| 日本va欧美va瓶| 五月天婷婷丁香网| 欧美日本一区二区| 免费在线看黄色| 91在线免费观看网站| 一区二区三区网站| 制服.丝袜.亚洲.中文.综合懂| 亚洲欧美韩国综合色| 国产黄色一区二区| 欧美精品www| 久久精品色综合| 无码aⅴ精品一区二区三区浪潮 | 国产91在线看| 国产亚洲成人av| 亚洲国产精品一区二区久| 在线天堂新版最新版在线8| 久久国产精品精品国产色婷婷| 亚洲尤物影院| 三区四区在线观看| 制服丝袜中文字幕亚洲| 色黄网站在线观看| 久久精品国产美女| 狂野欧美一区| 国产一二三四区| 精品国产凹凸成av人网站| 在线免费三级电影网站| 亚洲日本japanese丝袜| 国产一区二区三区不卡在线观看 | 色综合色狠狠综合色| 日本高清视频在线播放| 国产chinese精品一区二区| 国产一区二区三区的电影| 在线观看免费黄色网址| 91精品国产黑色紧身裤美女| a国产在线视频| 茄子视频成人在线观看| 国产精品1区二区.| 免费看污视频的网站| 欧美成年人在线观看| 窝窝社区一区二区| 色男人天堂av| 色综合久久99| 特级毛片在线| 视频一区在线免费观看| 国产a区久久久| 欧美成人精品网站| 欧美交受高潮1| 青青草原综合久久大伊人精品| 制服.丝袜.亚洲.中文.综合懂| 欧美性生活影院| av资源在线|