爬蟲的"盜亦有道"-Robots協(xié)議

網(wǎng)絡(luò)爬蟲的君子協(xié)議

執(zhí)著

網(wǎng)絡(luò)爬蟲的尺寸

小規(guī)模,數(shù)量小,爬去速度不敏感况褪,requests庫 中規(guī)模锣笨,數(shù)據(jù)規(guī)模較大,爬取速度敏感scrapy庫 大規(guī)模碎罚,搜索引擎,爬取速度關(guān)鍵定制開發(fā)
爬取網(wǎng)頁 玩轉(zhuǎn)網(wǎng)頁 爬取網(wǎng)站 爬取系列網(wǎng)站 爬取全網(wǎng)

網(wǎng)絡(luò)爬蟲引發(fā)的問題

  • 性能騷擾
  • 法律風險
  • 隱私泄露

網(wǎng)絡(luò)爬蟲的"性能騷擾"
web服務(wù)器默認接受人類訪問会傲,受限于編寫水平和目的锅棕,網(wǎng)絡(luò)爬蟲將會為web服務(wù)器帶來巨大的資源的開銷。
網(wǎng)絡(luò)爬蟲的法律風險
服務(wù)器上的數(shù)據(jù)有產(chǎn)權(quán)歸屬淌山,網(wǎng)絡(luò)爬蟲獲取數(shù)據(jù)后牟利將會帶來法律的風險裸燎。
網(wǎng)絡(luò)爬蟲的隱私泄露
網(wǎng)絡(luò)爬蟲可能具備突破簡單訪問的控制能力,獲取被保護的數(shù)據(jù)泼疑,從而泄露個人隱私德绿。

網(wǎng)絡(luò)爬蟲的限制

  • 來源審查:判斷User-Agent進行限制,檢查來訪者HTTP協(xié)議頭的User-Agent域退渗,只響應(yīng)瀏覽器或友好爬蟲的訪問
  • 發(fā)布公告: Robots協(xié)議移稳, 告知所有的爬蟲網(wǎng)站的爬蟲策略,要求爬蟲遵守会油。

Robots協(xié)議

Robots協(xié)議(也稱為爬蟲協(xié)議个粱、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”(Robots ExclusionProtocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取翻翩,哪些頁面不能抓取.

根據(jù)協(xié)議都许,網(wǎng)站管理員可以在網(wǎng)站域名的根目錄下放一個robots.txt 文本文件,里面可以指定不同的網(wǎng)絡(luò)爬蟲能訪問的頁面和禁止訪問的頁面嫂冻,指定的頁面由正則表達式表示胶征。網(wǎng)絡(luò)爬蟲在采集這個網(wǎng)站之前,首先獲取到這個文件桨仿,然后解析到其中的規(guī)則睛低,然后根據(jù)規(guī)則來采集網(wǎng)站的數(shù)據(jù)。

注意服傍,這個協(xié)議的存在更多的是需要網(wǎng)絡(luò)爬蟲去遵守暇昂,而起不到防止爬蟲的功能。

為什么需要Robots協(xié)議

互聯(lián)網(wǎng)上的網(wǎng)頁是通過超級鏈接互相關(guān)聯(lián)起來的伴嗡,從而形成了網(wǎng)頁的網(wǎng)狀結(jié)構(gòu)。爬蟲的工作方式就像蜘蛛在網(wǎng)上沿著鏈接爬來爬去从铲,最基本的流程可以簡化如下:

  1. 喂給爬蟲一堆url瘪校,我們稱之為種子(seeds);
  2. 爬蟲抓取seeds,解析html網(wǎng)頁阱扬,抽取其中的超級鏈接泣懊;
  3. 爬蟲接著抓取這些新發(fā)現(xiàn)的鏈接指向的網(wǎng)頁。

步驟2和步驟3循環(huán)往復麻惶。

了解了上面的流程就能發(fā)現(xiàn):對爬蟲來說網(wǎng)站非常被動馍刮,只有老老實實被抓取的份。

所以窃蹋,對于網(wǎng)站的管理者來說卡啰,就存在這樣的需求:

某些路徑下是個人隱私或者網(wǎng)站管理使用,不想被搜索引擎抓取警没,比如說日本愛情動作片匈辱;
不喜歡某個搜索引擎,不愿意被他抓取杀迹,最有名的就是之前淘寶不希望被百度抓韧隽场;
小網(wǎng)站使用的是公用的虛擬主機树酪,流量有限或者需要付費浅碾,希望搜索引擎抓的溫柔點;
某些網(wǎng)頁是動態(tài)生成的续语,沒有直接的鏈接指向垂谢,但是希望內(nèi)容被搜索引擎抓取和索引。

網(wǎng)站內(nèi)容的所有者是網(wǎng)站管理員绵载,搜索引擎應(yīng)該尊重所有者的意愿埂陆,為了滿足以上等等,就需要提供一種網(wǎng)站和爬蟲進行溝通的途徑娃豹,給網(wǎng)站管理員表達自己意愿的機會焚虱。有需求就有供應(yīng),robots協(xié)議就此誕生懂版。

案例

京東的Robots協(xié)議
https://www.jd.com/robots.txt

User-agent: * 
Disallow: /?* 
Disallow: /pop/*.html 
Disallow: /pinpai/*.html?* 
User-agent: EtaoSpider 
Disallow: / 
User-agent: HuihuiSpider 
Disallow: / 
User-agent: GwdangSpider 
Disallow: / 
User-agent: WochachaSpider 
Disallow: /

百度的Robots協(xié)議
https://www.baidu.com/robots.txt

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?


User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

User-agent: *
Disallow: /

上面鹃栽,*代表所有,/代表根目錄

Robots協(xié)議的寫法

既然網(wǎng)絡(luò)爬蟲在爬取一個網(wǎng)站之前躯畴,要先獲取到這個文件民鼓,然后解析到其中的規(guī)則,那么蓬抄,Robots就必須要有一套通用的語法規(guī)則丰嘉。

最簡單的robots.txt只有兩條規(guī)則:

User-agent:指定對哪些爬蟲生效
Disallow:指定要屏蔽的網(wǎng)址
先說User-agent,爬蟲抓取時會聲明自己的身份嚷缭,這就是User-agent饮亏,沒錯耍贾,就是http協(xié)議里的User-agent。robots.txt利用User-agent來區(qū)分各個引擎的爬蟲路幸,比如說google網(wǎng)頁搜索爬蟲的User-agent為Googlebot荐开。

可能有讀者要問了,我怎么知道爬蟲的User-agent是什么?你還可以查相關(guān)搜索引擎的資料得到官方的數(shù)據(jù)简肴,比如說百度的爬蟲列表是這樣的:

產(chǎn)品名稱 對應(yīng)User-Agent
網(wǎng)頁搜索 Baiduspider
移動搜索 Baiduspider
圖片搜索 Baiduspider-image
視頻搜索 Baiduspider-video
新聞搜索 Baiduspider-news
百度搜索 Baiduspider-favo
百度聯(lián)盟 Baiduspider-cpro
商務(wù)搜索 Baiduspider-ads

Disallow 行列出的是要攔截的網(wǎng)頁晃听,以正斜線 (/) 開頭,可以列出特定的網(wǎng)址或模式砰识。要屏蔽整個網(wǎng)站能扒,使用正斜線即可;要屏蔽某一目錄以及其中的所有內(nèi)容,在目錄名后添加正斜線;要屏蔽某個具體的網(wǎng)頁仍翰,就指出這個網(wǎng)頁赫粥。

下面介紹一些實例:
允許所有的robot訪問

User-agent: *
Disallow:

或者也可以建一個空文件 "/robots.txt" file。

禁止爬蟲訪問所有目錄

User-agent: *
Disallow: /

禁止爬蟲訪問某些目錄

User-agent: *
Disallow: /a/
Disallow: /b/
Disallow: /c/

禁止某些爬蟲訪問

User-agent: BadBot
Disallow: /

只允許某個爬蟲訪問

User-agent: MangCrawler
Disallow:
User-agent: *
Disallow: /

我們再來結(jié)合兩個真實的范例來學習一下予借。先看這個例子:

User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /

這個是淘寶網(wǎng)的Robots協(xié)議內(nèi)容越平,相信你已經(jīng)看出來了,淘寶網(wǎng)禁止百度的爬蟲訪問灵迫。

再來看一個例子:

User-agent: *
Disallow: /?*
Disallow: /pop/*.html
User-agent: EtaoSpider
Disallow: /

這個稍微復雜點秦叛,京東有2個目錄不希望所有的爬蟲來抓。同時瀑粥,京東完全屏蔽了一淘網(wǎng)的蜘蛛(EtaoSpider是一淘網(wǎng)的蜘蛛)挣跋。

Robots協(xié)議進階知識

sitemap
爬蟲會通過網(wǎng)頁內(nèi)部的鏈接發(fā)現(xiàn)新的網(wǎng)頁。但是如果沒有連接指向的網(wǎng)頁怎么辦?或者用戶輸入條件生成的動態(tài)網(wǎng)頁怎么辦?能否讓網(wǎng)站管理員通知搜索引擎他們網(wǎng)站上有哪些可供抓取的網(wǎng)頁?這就是sitemap狞换,最簡單的 Sitepmap 形式就是 XML 文件避咆,在其中列出網(wǎng)站中的網(wǎng)址以及關(guān)于每個網(wǎng)址的其他數(shù)據(jù)(上次更新的時間、更改的頻率以及相對于網(wǎng)站上其他網(wǎng)址的重要程度等等)修噪,利用這些信息搜索引擎可以更加智能地抓取網(wǎng)站內(nèi)容查库。

新的問題來了,爬蟲怎么知道這個網(wǎng)站有沒有提供sitemap文件黄琼,或者說網(wǎng)站管理員生成了sitemap樊销,(可能是多個文件),爬蟲怎么知道放在哪里呢?

由于robots.txt的位置是固定的脏款,于是大家就想到了把sitemap的位置信息放在robots.txt里围苫。這就成為robots.txt里的新成員了。

節(jié)選一段google robots.txt:

Sitemap: http://www.gstatic.com/cultur...
Sitemap: http://www.google.com/hostedn...

插一句撤师,考慮到一個網(wǎng)站的網(wǎng)頁眾多剂府,sitemap人工維護不太靠譜,google提供了工具可以自動生成sitemap剃盾。

meta tag
其實嚴格來說這部分內(nèi)容不屬于robots.txt周循。

robots.txt的初衷是為了讓網(wǎng)站管理員管理可以出現(xiàn)在搜索引擎里的網(wǎng)站內(nèi)容强法。但是,即使使用 robots.txt 文件讓爬蟲無法抓取這些內(nèi)容湾笛,搜索引擎也可以通過其他方式找到這些網(wǎng)頁并將它添加到索引中。例如闰歪,其他網(wǎng)站仍可能鏈接到該網(wǎng)站嚎研。因此,網(wǎng)頁網(wǎng)址及其他公開的信息(如指向相關(guān)網(wǎng)站的鏈接中的定位文字或開放式目錄管理系統(tǒng)中的標題)有可能會出現(xiàn)在引擎的搜索結(jié)果中库倘。如果想徹底對搜索引擎隱身那咋整呢?答案是:元標記临扮,即meta tag。

比如要完全阻止一個網(wǎng)頁的內(nèi)容列在搜索引擎索引中(即使有其他網(wǎng)站鏈接到此網(wǎng)頁)教翩,可使用 noindex 元標記杆勇。只要搜索引擎查看該網(wǎng)頁,便會看到 noindex 元標記并阻止該網(wǎng)頁顯示在索引中饱亿,這里注意noindex元標記提供的是一種逐頁控制對網(wǎng)站的訪問的方式蚜退。

要防止所有搜索引擎將網(wǎng)站中的網(wǎng)頁編入索引,在網(wǎng)頁的部分添加:

<meta name="robots" content="noindex">

這里的name取值可以設(shè)置為某個搜索引擎的User-agent從而指定屏蔽某一個搜索引擎彪笼。

除了noindex外钻注,還有其他元標記,比如說nofollow配猫,禁止爬蟲從此頁面中跟蹤鏈接幅恋。詳細信息可以參考Google支持的元標記,這里提一句:noindex和nofollow在HTML 4.01規(guī)范里有描述泵肄,但是其他tag的在不同引擎支持到什么程度各不相同捆交,還請讀者自行查閱各個引擎的說明文檔。

Crawl-delay
除了控制哪些可以抓哪些不能抓之外腐巢,robots.txt還可以用來控制爬蟲抓取的速率品追。如何做到的呢?通過設(shè)置爬蟲在兩次抓取之間等待的秒數(shù)。這種操作可以進行緩解服務(wù)器壓力系忙。

Crawl-delay:5

表示本次抓取后下一次抓取前需要等待5秒诵盼。

注意:google已經(jīng)不支持這種方式了,在webmaster tools里提供了一個功能可以更直觀的控制抓取速率银还。

這里插一句題外話风宁,幾年前曾經(jīng)有一段時間robots.txt還支持復雜的參數(shù):Visit-time,只有在visit-time指定的時間段里蛹疯,爬蟲才可以訪問;Request-rate: 用來限制URL的讀取頻率戒财,用于控制不同的時間段采用不同的抓取速率。后來估計支持的人太少捺弦,就漸漸的廢掉了饮寞,目前google和baidu都已經(jīng)不支持這個規(guī)則了孝扛,其他小的引擎公司貌似從來都沒有支持過。

Robots協(xié)議的遵守方式

網(wǎng)絡(luò)爬蟲:
自動或人工識別rotbots.txt幽崩,再進行內(nèi)容爬取
約束性:
Robots協(xié)議是建議但非約束性苦始,網(wǎng)絡(luò)爬蟲可以不遵守,但存在法律風險慌申。

對Robots協(xié)議的理解

訪問量小:可以遵守
訪問量較大:建議遵守
非商業(yè)且偶爾:建議遵守
商業(yè)利益:必須遵守
必須遵守
爬取網(wǎng)頁 玩轉(zhuǎn)網(wǎng)頁 爬取網(wǎng)站 爬取系列網(wǎng)站 爬取全網(wǎng)

原則:類人行為可以不參考Robots協(xié)議陌选。

防君子不防小人(君子協(xié)議)

Robots協(xié)議不是什么技術(shù)壁壘,而只是一種互相尊重的協(xié)議蹄溉,好比私家花園的門口掛著“閑人免進”咨油,尊重者繞道而行,不尊重者依然可以推門而入柒爵。目前役电,Robots協(xié)議在實際使用中,還存在一些問題棉胀。

緩存

robots.txt本身也是需要抓取的法瑟,出于效率考慮,一般爬蟲不會每次抓取網(wǎng)站網(wǎng)頁前都抓一下robots.txt膏蚓,加上robots.txt更新不頻繁瓢谢,內(nèi)容需要解析。通常爬蟲的做法是先抓取一次驮瞧,解析后緩存下來氓扛,而且是相當長的時間。假設(shè)網(wǎng)站管理員更新了robots.txt论笔,修改了某些規(guī)則采郎,但是對爬蟲來說并不會立刻生效,只有當爬蟲下次抓取robots.txt之后才能看到最新的內(nèi)容狂魔。尷尬的是蒜埋,爬蟲下次抓取robots.txt的時間并不是由網(wǎng)站管理員控制的。當然最楷,有些搜索引擎提供了web 工具可以讓網(wǎng)站管理員通知搜索引擎那個url發(fā)生了變化整份,建議重新抓取。注意籽孙,此處是建議烈评,即使你通知了搜索引擎,搜索引擎何時抓取仍然是不確定的犯建,只是比完全不通知要好點讲冠。至于好多少,那就看搜索引擎的良心和技術(shù)能力了适瓦。

ignore

不知是無意還是有意竿开,反正有些爬蟲不太遵守或者完全忽略robots.txt谱仪,不排除開發(fā)人員能力的問題,比如說根本不知道robots.txt否彩。另外疯攒,本身robots.txt不是一種強制措施,如果網(wǎng)站有數(shù)據(jù)需要保密列荔,必需采取技術(shù)措施卸例,比如說:用戶驗證,加密肌毅,ip攔截,訪問頻率控制等姑原。

專注

惡意爬蟲

在互聯(lián)網(wǎng)世界中悬而,每天都有不計其數(shù)的爬蟲在日夜不息地爬取數(shù)據(jù),其中惡意爬蟲的數(shù)量甚至高于非惡意爬蟲锭汛。遵守Robots協(xié)議的爬蟲才是好爬蟲笨奠,但是并不是每個爬蟲都會主動遵守Robots協(xié)議。

惡意爬蟲可以帶來很多潛在威脅唤殴,比如電商網(wǎng)站的商品信息被爬取可能會被競爭對手利用般婆,過多的爬蟲還會占用帶寬資源、甚至導致網(wǎng)站宕機朵逝。

反惡意爬蟲是一件漫長而艱巨的任務(wù)蔚袍,如果依靠自身實力難以解決,可以借助豈安科技的業(yè)務(wù)風險分析平臺 WARDEN 來反惡意爬蟲配名,根據(jù)自己的需求來定制功能啤咽。

感謝你的閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渠脉,隨后出現(xiàn)的幾起案子宇整,更是在濱河造成了極大的恐慌,老刑警劉巖芋膘,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳞青,死亡現(xiàn)場離奇詭異,居然都是意外死亡为朋,警方通過查閱死者的電腦和手機臂拓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潜腻,“玉大人埃儿,你說我怎么就攤上這事∪诨粒” “怎么了童番?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵精钮,是天一觀的道長。 經(jīng)常有香客問我剃斧,道長轨香,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任幼东,我火速辦了婚禮臂容,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘根蟹。我一直安慰自己脓杉,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布简逮。 她就那樣靜靜地躺著球散,像睡著了一般。 火紅的嫁衣襯著肌膚如雪散庶。 梳的紋絲不亂的頭發(fā)上蕉堰,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音悲龟,去河邊找鬼屋讶。 笑死,一個胖子當著我的面吹牛须教,可吹牛的內(nèi)容都是我干的皿渗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼没卸,長吁一口氣:“原來是場噩夢啊……” “哼羹奉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起约计,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤诀拭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后煤蚌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耕挨,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年尉桩,在試婚紗的時候發(fā)現(xiàn)自己被綠了筒占。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜘犁,死狀恐怖翰苫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤奏窑,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布导披,位于F島的核電站,受9級特大地震影響埃唯,放射性物質(zhì)發(fā)生泄漏撩匕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一墨叛、第九天 我趴在偏房一處隱蔽的房頂上張望止毕。 院中可真熱鬧,春花似錦漠趁、人聲如沸扁凛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽令漂。三九已至,卻和暖如春丸边,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荚孵。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工妹窖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人收叶。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓骄呼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親判没。 傳聞我的和親對象是個殘疾皇子蜓萄,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容