日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用機(jī)器學(xué)習(xí)在15分鐘內(nèi)破解驗(yàn)證碼,再也不擔(dān)心買不到12306的票啦

機(jī)器學(xué)習(xí)算法與人工智能 ? 來源:未知 ? 作者:楊鑫 ? 2018-03-06 17:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

每個(gè)人都討厭驗(yàn)證碼——只有輸入了那些討厭的圖片上的文本,才能訪問網(wǎng)站。驗(yàn)證碼的設(shè)計(jì)是為了防止計(jì)算機(jī)自動(dòng)填寫表格,驗(yàn)證你是一個(gè)真實(shí)的“人”。但隨著深度學(xué)習(xí)計(jì)算機(jī)視覺的興起,現(xiàn)在他們往往容易被擊敗。

我一直在讀一本由AdrianRosebrock所寫的書《Deep Learning for Computer Vision with Python》(Python計(jì)算機(jī)視覺深度學(xué)習(xí))。在這本書中,Adrian回顧了如何通過機(jī)器學(xué)習(xí)破解e – zpass紐約網(wǎng)站上的驗(yàn)證碼系統(tǒng):

Adrian沒有訪問生成驗(yàn)證碼圖像的應(yīng)用程序的源代碼。為了破解這個(gè)系統(tǒng),他不得不下載數(shù)百個(gè)示例圖像,并手動(dòng)解決它們以訓(xùn)練他的系統(tǒng)。

但是,如果我們想要破解一個(gè)開源的驗(yàn)證碼系統(tǒng),我們?nèi)ツ睦镌L問源代碼呢?

我訪問了WordPress.org插件登記網(wǎng)站,并搜索了“CAPTCHA”。上面的結(jié)果被稱為“Really Simple CAPTCHA”,并且有超過100萬的安裝量:

WordPress.org插件登記地址:https://wordpress.org/plugins/

最棒的是,這里有它的源代碼!因?yàn)橛猩沈?yàn)證碼的源代碼,所以這應(yīng)該很容易被破解。為了讓事情變得更有挑戰(zhàn)性,讓我們給自己一個(gè)時(shí)間限制。我們能在15分鐘內(nèi)徹底破解這個(gè)驗(yàn)證碼系統(tǒng)嗎?讓我們?cè)囈辉?

重要提示:這絕不是批評(píng)“Really Simple CAPTCHA”插件或其作者。插件作者自己說它已經(jīng)不安全了,建議你使用其他的東西。這只是一個(gè)有趣并且快速的技術(shù)挑戰(zhàn)。但如果你是100萬用戶之一,或許你應(yīng)該有所防備了:)

挑戰(zhàn)

首先,讓我們需要知道 Really Simple CAPTCHA生成什么樣的圖像。在演示網(wǎng)站上,我們看到:

Really Simple CAPTCHA地址:https://wordpress.org/plugins/really-simple-captcha/

演示驗(yàn)證碼圖片

驗(yàn)證碼圖像看起來是四個(gè)字母。讓我們?cè)赑HP源代碼中驗(yàn)證這一點(diǎn):

public function __construct() { /* Characters available in images */ $this->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; /* Length of a word in an image */ $this->char_length = 4; /* Array of fonts. Randomly picked up per character */ $this->fonts = array( dirname( __FILE__ ) . '/gentium/GenBkBasR.ttf', dirname( __FILE__ ) . '/gentium/GenBkBasI.ttf', dirname( __FILE__ ) . '/gentium/GenBkBasBI.ttf', dirname( __FILE__ ) . '/gentium/GenBkBasB.ttf', );

是的,它生成了4個(gè)字母的驗(yàn)證碼,使用4種不同字體的隨機(jī)組合。我們可以看到,在代碼中它從不使用“O”或“I”,以此避免用戶的混淆。這就給我們留下了32個(gè)可能的字母和數(shù)字。

到目前為止的時(shí)間:2分鐘

我們的工具集

在我們進(jìn)一步討論之前,我們先來討論一下解決這個(gè)問題需要的工具:

Python 3

Python是一種很有趣的編程語言,包含很好的機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺庫。

OpenCV

OpenCV是一個(gè)流行的計(jì)算機(jī)視覺和圖像處理框架。我們將使用OpenCV來處理驗(yàn)證碼圖像。它有一個(gè)Python API,因此我們可以直接在Python中使用。

Keras

Keras是用Python編寫的深度學(xué)習(xí)框架。它使得定義、訓(xùn)練和使用具有最小編碼的深度神經(jīng)網(wǎng)絡(luò)變得很容易。

TensorFlow

TensorFlow是谷歌的機(jī)器學(xué)習(xí)庫。我們將在Keras中編碼,但是Keras并沒有真正實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)邏輯本身。相反,它使用谷歌在幕后的TensorFlow庫來完成繁重的任務(wù)。

好了,回到挑戰(zhàn)。

創(chuàng)建數(shù)據(jù)集

訓(xùn)練任何機(jī)器學(xué)習(xí)系統(tǒng),都需要訓(xùn)練數(shù)據(jù)。要破解驗(yàn)證碼系統(tǒng),我們需要這樣的訓(xùn)練數(shù)據(jù):

我們有了WordPress插件的源代碼,就可以修改它來保存10000個(gè)驗(yàn)證碼圖像,以及每個(gè)圖像的預(yù)期答案。

在對(duì)代碼進(jìn)行了幾分鐘的破解并添加了一個(gè)簡(jiǎn)單的for循環(huán)之后,我有了一個(gè)包含訓(xùn)練數(shù)據(jù)的文件夾—10,000個(gè)PNG文件,將正確的答案作為其文件名:

這是唯一的我不給你示例代碼的部分。我們這樣做是為了教學(xué),我不希望你真的去垃圾郵件網(wǎng)站。但是我會(huì)給你我在最后生成的10000張照片,這樣你就可以復(fù)制我的結(jié)果。

到目前為止的時(shí)間:5分鐘

簡(jiǎn)化問題

現(xiàn)在我們有了訓(xùn)練數(shù)據(jù),我們可以直接用它來訓(xùn)練神經(jīng)網(wǎng)絡(luò):

如果有足夠的訓(xùn)練數(shù)據(jù),這種方法可能有效——但是我們可以使問題變得簡(jiǎn)單得多。問題越簡(jiǎn)單,訓(xùn)練數(shù)據(jù)越少,我們解決需要的計(jì)算力就越少。我們畢竟只有15分鐘!

幸運(yùn)的是,驗(yàn)證碼圖像通常只由四個(gè)字母組成。如果我們能把圖像分割開來,這樣每個(gè)字母都是一個(gè)單獨(dú)的圖像,那么我們只需訓(xùn)練神經(jīng)網(wǎng)絡(luò)識(shí)別單個(gè)字母:

我沒有時(shí)間去瀏覽10000個(gè)訓(xùn)練圖像,并且用Photoshop將它們手工分割成單獨(dú)的圖像。這需要幾天的時(shí)間,但我只剩下10分鐘了。我們不能將圖像分割成4個(gè)等分大小的塊,因?yàn)轵?yàn)證碼隨機(jī)將字母放置在不同的水平位置,如下圖所示:

每個(gè)圖像中的字母都是隨機(jī)放置的,使圖像分割變得更加困難。

幸運(yùn)的是,我們?nèi)匀豢梢詫?shí)現(xiàn)自動(dòng)化。在圖像處理中,我們經(jīng)常需要檢測(cè)具有相同顏色的像素的“blob”。這些連續(xù)像素點(diǎn)的邊界稱為輪廓。OpenCV有一個(gè)內(nèi)置的findContours()函數(shù),我們可以用它來檢測(cè)這些連續(xù)區(qū)域。

我們將從一個(gè)原始的驗(yàn)證碼圖像開始:

然后我們將圖像轉(zhuǎn)換成純黑白像素點(diǎn)(這稱為色彩閾值法),這樣就很容易找到連續(xù)區(qū)域的輪廓邊界:

接下來,我們將使用OpenCV的findContours()函數(shù)來檢測(cè)圖像中包含相同顏色連續(xù)像素塊的分離部分:

接著把每個(gè)區(qū)域作為一個(gè)單獨(dú)的圖像文件保存。因?yàn)槲覀冎烂總€(gè)圖像應(yīng)該包含從左到右的四個(gè)字母,所以我們可以用這些知識(shí)來標(biāo)記我們保存的字母。我們按這個(gè)順序把它們存起來,并用相應(yīng)的字母名稱來保存每一個(gè)圖像字母。

但是等一下—我發(fā)現(xiàn)問題了!有時(shí)驗(yàn)證碼有這樣重疊的字母:

這意味著我們最終將提取將兩個(gè)字母拼湊在一起的區(qū)域:

如果我們不處理這個(gè)問題,我們就會(huì)產(chǎn)生糟糕的訓(xùn)練數(shù)據(jù)。我們需要解決這個(gè)問題,這樣我們就不會(huì)偶然地讓機(jī)器將這兩個(gè)squashed – together字母識(shí)別為一個(gè)字母。

有一個(gè)簡(jiǎn)單的竅門:如果一個(gè)區(qū)域的寬比它的高度大,那就意味著我們可能有兩個(gè)字母擠壓在一起了。在這種情況下,我們可以把這兩個(gè)字母放在中間,把它分成兩個(gè)獨(dú)立的字母:

現(xiàn)在我們有了一種提取單個(gè)字母的方法,讓我們?cè)谒械尿?yàn)證碼圖像中運(yùn)行它。目的是收集每個(gè)字母的不同變體。我們可以把每個(gè)字母都保存在自己的文件夾里。

這是我摘取所有字母后,“W”文件夾的圖片:

到目前為止的時(shí)間:10分鐘

構(gòu)建并訓(xùn)練神經(jīng)網(wǎng)絡(luò)

因?yàn)槲覀冎恍枰R(shí)別單個(gè)字母的圖像,所以并需要一個(gè)非常復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。識(shí)別字母比識(shí)別像貓和狗這樣的復(fù)雜圖像要容易得多。

我們將使用一個(gè)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),它有兩個(gè)卷積層和兩個(gè)完全連通的層:

定義這個(gè)神經(jīng)網(wǎng)絡(luò)架構(gòu)只需要使用Keras的幾行代碼:

# Build the neural network! model = Sequential() # First convolutional layer with max pooling model.add(Conv2D(20, (5, 5), padding="same", input_shape=(20, 20, 1), activation="relu")) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # Second convolutional layer with max pooling model.add(Conv2D(50, (5, 5), padding="same", activation="relu")) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # Hidden layer with 500 nodes model.add(Flatten()) model.add(Dense(500, activation="relu")) # Output layer with 32 nodes (one for each possible letter/number we predict) model.add(Dense(32, activation="softmax")) # Ask Keras to build the TensorFlow model behind the scenes model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

現(xiàn)在我們可以運(yùn)行它了。

# Train the neural network model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=32, epochs=10, verbose=1)

經(jīng)過訓(xùn)練數(shù)據(jù)集10次之后,我們達(dá)到了接近100%的準(zhǔn)確度。我們應(yīng)該能夠在任何我們需要的時(shí)候自動(dòng)繞過這個(gè)驗(yàn)證碼。

時(shí)間過了:15分鐘

使用訓(xùn)練的模型來以解決驗(yàn)證碼

現(xiàn)在我們有了一個(gè)經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò),用它來破解驗(yàn)證碼是很簡(jiǎn)單的:

1. 從WordPress插件的網(wǎng)站上獲取真正的驗(yàn)證碼圖像。

2. 用我們用來創(chuàng)建訓(xùn)練數(shù)據(jù)集的方法將驗(yàn)證碼圖像分割成四個(gè)不同的字母圖像。

3. 讓我們的神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)字母圖像做一個(gè)單獨(dú)的預(yù)測(cè)。

4. 用四個(gè)預(yù)測(cè)字母作為驗(yàn)證碼的答案。

下面是我們的模型如何解碼真實(shí)的驗(yàn)證碼:

或從命令行:

試一下

如果你想親自嘗試,你可以在這里獲取代碼。它包括10,000個(gè)示例圖像和本文中每個(gè)步驟的所有代碼。班闊說明如何運(yùn)行模型的README.md文件。

代碼地址:https://s3-us-west-2.amazonaws.com/mlif-example-code/solving_captchas_code_examples.zip

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:驗(yàn)證碼,再見!利用機(jī)器學(xué)習(xí)在15分鐘內(nèi)破解驗(yàn)證碼

文章出處:【微信號(hào):machinelearningai,微信公眾號(hào):機(jī)器學(xué)習(xí)算法與人工智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    6分鐘充滿,超越二代刀片!寧德時(shí)代新一代電池技術(shù)亮相

    了第三代神行超充電池,從10%到98%只需要627秒,從10%到80%僅需要驚人的344秒!等效10C,峰值15C的充電功率,充電跟加油同速,2026年真的要成為現(xiàn)實(shí)了。 ? 超
    的頭像 發(fā)表于 04-24 09:53 ?6923次閱讀
    6<b class='flag-5'>分鐘</b>充滿,超越二代刀片!寧德時(shí)代新一代電池技術(shù)亮相

    機(jī)器學(xué)習(xí)中的數(shù)據(jù)質(zhì)量雙保障:從“驗(yàn)證”到“標(biāo)記”

    機(jī)器學(xué)習(xí)的世界里,有句老話尤為貼切:“garbagein,garbageout”(輸入垃圾,輸出垃圾)。無論模型架構(gòu)多先進(jìn)、算法多精妙,數(shù)據(jù)的質(zhì)量始終是決定模型性能的核心。本文聚焦數(shù)據(jù)處理中兩個(gè)
    的頭像 發(fā)表于 04-24 15:48 ?110次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>中的數(shù)據(jù)質(zhì)量雙保障:從“<b class='flag-5'>驗(yàn)證</b>”到“標(biāo)記”

    用 OpenClaw 對(duì)接 1688 接口,快速實(shí)現(xiàn)圖片選品媽媽再也不擔(dān)心

    做電商的朋友,有沒有過這樣的崩潰時(shí)刻?刷到抖音、小紅書上的爆款好物,只存了一張圖,想在1688找源頭貨源,翻了幾十頁都找不到同款;手動(dòng)盯爆款價(jià)格、銷量,熬到半夜不說,還總錯(cuò)過最佳鋪貨時(shí)機(jī);自己寫爬蟲
    的頭像 發(fā)表于 04-13 13:32 ?169次閱讀

    高壓試驗(yàn)變壓器適用場(chǎng)景有哪些?看完再也不選錯(cuò)

    你是不是選擇高壓試驗(yàn)變壓器時(shí),不知道該如何根據(jù)自己的使用場(chǎng)景選型,擔(dān)心選錯(cuò)設(shè)備無法滿足檢測(cè)需求,或者造成資源浪費(fèi)?其實(shí),高壓試驗(yàn)變壓器的適用場(chǎng)景非常廣泛,不同場(chǎng)景對(duì)設(shè)備的要求也不同,這也是很多
    的頭像 發(fā)表于 03-26 11:51 ?243次閱讀
    高壓試驗(yàn)變壓器適用場(chǎng)景有哪些?看完<b class='flag-5'>再也不</b>選錯(cuò)

    即時(shí)零售 “十分鐘送達(dá)” 翻車?RFID 才是幕后穩(wěn)控手

    一、當(dāng) “十分鐘送達(dá)” 成為標(biāo)配,履約戰(zhàn)場(chǎng)藏著怎樣的暗戰(zhàn)? 打開外賣 APP,線上下單、樓下取貨的 “十分鐘送達(dá)” 早已不是新鮮事。從生鮮果蔬到服鞋美妝,即時(shí)零售正在重構(gòu) 3-5 公里內(nèi)的消費(fèi)生態(tài)
    的頭像 發(fā)表于 02-25 18:07 ?190次閱讀

    9988元捅破天花板!2025消費(fèi)級(jí)四足機(jī)器人,52分鐘銷售千臺(tái)

    在于將高階AI能力、全地形移動(dòng)性、情感化交互與實(shí)用功能深度融合。售價(jià)不到一萬塊的Vbot超能機(jī)器狗大頭BoBo,在京東上線52分鐘內(nèi)訂出1000臺(tái)。
    的頭像 發(fā)表于 12-30 18:26 ?1.4w次閱讀
    9988元捅破天花板!2025消費(fèi)級(jí)四足<b class='flag-5'>機(jī)器</b>人,52<b class='flag-5'>分鐘</b>銷售千臺(tái)

    Linux新手通關(guān)!5分鐘掌握文件/目錄管理,告別“找不到北”

    文件夾時(shí)明明點(diǎn)了操作,打開卻空無一物…?其實(shí)?Linux?的文件?/?目錄管理有?“固定套路”,學(xué)會(huì)?8?個(gè)核心命令,再記住?3?個(gè)避坑技巧,就能輕松搞定?90%?的操作,再也不用對(duì)著黑屏發(fā)呆! 今天就用“場(chǎng)景?+?實(shí)操”?的方式,把文件?/?目錄管理講得
    的頭像 發(fā)表于 11-17 10:42 ?652次閱讀
    Linux新手通關(guān)!5<b class='flag-5'>分鐘</b>掌握文件/目錄管理,告別“找<b class='flag-5'>不到</b>北”

    KiCad 的小技巧實(shí)在太多了... KiCad培訓(xùn)15分鐘后有感...

    “ ?今天現(xiàn)場(chǎng)聽 Lead Dev Seth 的培訓(xùn),短短 15 分鐘,發(fā)現(xiàn) KiCad 的小技巧太多了,非常實(shí)用...? ” ? 小編一直覺得對(duì) KiCad 已經(jīng)很了解了,但是早上聽了 1
    的頭像 發(fā)表于 11-13 11:17 ?3081次閱讀
    KiCad 的小技巧實(shí)在太多了... KiCad培訓(xùn)<b class='flag-5'>15</b><b class='flag-5'>分鐘</b>后有感...

    遠(yuǎn)程打印難題?一鍵搞定,再也不用跑辦公室

    臨時(shí)要打印外地電腦上的一份文件,卻束手無策?尤其電商人、跨境黨、老師、產(chǎn)品經(jīng)理、科研黨…怎么能快速又安全地“遠(yuǎn)程打印”?別擔(dān)心,我有辦法!通過Splashtop簡(jiǎn)單設(shè)置,就能輕松實(shí)現(xiàn)“遠(yuǎn)程文件,本地
    的頭像 發(fā)表于 11-05 17:00 ?1294次閱讀
    遠(yuǎn)程打印難題?一鍵搞定,<b class='flag-5'>再也不</b>用跑辦公室<b class='flag-5'>啦</b>!

    測(cè)試小白3分鐘上手,零代自動(dòng)化測(cè)試平臺(tái),15分鐘搭建自動(dòng)化測(cè)試方案

    還在為不懂代碼、搭建測(cè)試方案耗時(shí)久而發(fā)愁?ATECLOUD 零代自動(dòng)化測(cè)試平臺(tái),專為自動(dòng)化測(cè)試量身打造,小白3 分鐘就能輕松上手,15 分鐘即可完成自動(dòng)化測(cè)試方案搭建,徹底打破傳統(tǒng)測(cè)
    的頭像 發(fā)表于 09-22 17:52 ?1052次閱讀
    測(cè)試小白3<b class='flag-5'>分鐘</b>上手,零代<b class='flag-5'>碼</b>自動(dòng)化測(cè)試平臺(tái),<b class='flag-5'>15</b><b class='flag-5'>分鐘</b>搭建自動(dòng)化測(cè)試方案

    【一分鐘教程】用ZMC600E實(shí)現(xiàn)關(guān)節(jié)機(jī)器人±180度精準(zhǔn)轉(zhuǎn)動(dòng)

    分鐘速覽:從設(shè)備連接到編程控制,演示關(guān)節(jié)機(jī)器人的±180度精準(zhǔn)轉(zhuǎn)動(dòng)。關(guān)節(jié)機(jī)器人±180度轉(zhuǎn)動(dòng)例程科技高度發(fā)達(dá)今天,越來越多的智能機(jī)器人進(jìn)
    的頭像 發(fā)表于 08-15 11:36 ?984次閱讀
    【一<b class='flag-5'>分鐘</b>教程】用ZMC600E實(shí)現(xiàn)關(guān)節(jié)<b class='flag-5'>機(jī)器</b>人±180度精準(zhǔn)轉(zhuǎn)動(dòng)

    自動(dòng)化測(cè)試如何繞過Cloudflare驗(yàn)證碼?Python + Selenium 腳本實(shí)戰(zhàn)指南!

    01什么是Cloudflare驗(yàn)證碼Cloudflare提供網(wǎng)絡(luò)工具,并提供一套全面的安全功能,以保護(hù)網(wǎng)站免受各種在線威脅。Cloudflare驗(yàn)證碼是一種用于區(qū)分人類用戶和自動(dòng)化機(jī)器人的功能。它是
    的頭像 發(fā)表于 08-15 10:01 ?1662次閱讀
    自動(dòng)化測(cè)試如何繞過Cloudflare<b class='flag-5'>驗(yàn)證碼</b>?Python + Selenium 腳本實(shí)戰(zhàn)指南!

    IDE中運(yùn)行固件內(nèi)自帶的AI程序,約2分鐘左右就死機(jī)了,為什么?

    1、IDE中運(yùn)行固件內(nèi)自帶的AI程序,約2分鐘左右就死機(jī),點(diǎn)擊停止報(bào) 繁忙,點(diǎn)連接也報(bào) 忙碌中。從資源管理器中點(diǎn)擊CanMV可以訪問下一級(jí)文件夾。 2、過幾分鐘
    發(fā)表于 06-06 07:28

    HarmonyOS5云服務(wù)技術(shù)分享--登錄郵件功能整理

    ;gt; { console.log(\"驗(yàn)證碼登錄成功!\"); }); 4. 敏感操作處理?? ??修改郵箱/密碼需先進(jìn)行重認(rèn)證??(用戶需5分鐘內(nèi)登錄
    發(fā)表于 05-22 16:04

    HarmonyOS5云服務(wù)技術(shù)分享--手機(jī)號(hào)登錄教程

    保護(hù)??:修改手機(jī)號(hào)/密碼時(shí),必須5分鐘內(nèi)登錄過 ??錯(cuò)誤碼處理??: 203817932: 驗(yàn)證碼錯(cuò)誤 203817933: 驗(yàn)證碼過期 203817945: 操作過于頻繁 ??多
    發(fā)表于 05-22 15:37
    若尔盖县| 岐山县| 和林格尔县| 牟定县| 象州县| 沅陵县| 志丹县| 雅安市| 江安县| 军事| 沁水县| 武功县| 桑植县| 锡林浩特市| 阿瓦提县| 台江县| 广德县| 阜平县| 栖霞市| 青河县| 巢湖市| 乌拉特前旗| 东平县| 嘉义市| 隆林| 贵南县| 红河县| 前郭尔| 朝阳县| 阜康市| 高邮市| 柳江县| 紫阳县| 星子县| 辛集市| 佛学| 广西| 富锦市| 衡阳市| 娄烦县| 蓬莱市|