最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python實(shí)現(xiàn)無(wú)需驗(yàn)證碼免登錄12306搶票功能

 更新時(shí)間:2025年01月10日 10:08:06   作者:重劍無(wú)鋒1024  
隨著科技的發(fā)展,越來(lái)越多的人選擇通過(guò)網(wǎng)絡(luò)購(gòu)買火車票,而12306作為中國(guó)鐵路客戶服務(wù)中心的官方網(wǎng)站,成為了人們購(gòu)票的首選平臺(tái),然而,在春運(yùn)、暑運(yùn)等高峰期,由于車票緊張,搶票成為了一項(xiàng)具有挑戰(zhàn)性的任務(wù),下面,我們將詳細(xì)介紹如何使用python實(shí)現(xiàn)無(wú)需驗(yàn)證碼免登錄12306搶票

前言

提示:這里可以添加本文要記錄的大概內(nèi)容:

就在剛剛我搶的票:2025年1月8日 上午9.00多 搶到了哈哈哈哈— 其實(shí)還是有用的我是在 8:59:56運(yùn)行程序的

上一篇帖子,我們已經(jīng)了解了如何用python自動(dòng)登錄12306實(shí)現(xiàn)自動(dòng)搶票,現(xiàn)在我們來(lái)一個(gè)進(jìn)階的版本,實(shí)現(xiàn)cookie免登錄,這樣可繞過(guò)驗(yàn)證碼實(shí)現(xiàn)自動(dòng)搶票。同時(shí)包括環(huán)境如何配置,也在這個(gè)帖子里面。

需求:上此的帖子,需要自動(dòng)登錄,并且需要手機(jī)驗(yàn)證碼,在真實(shí)搶票中太過(guò)繁瑣,所有我自己也在思索,找了帖子和B站,終于實(shí)現(xiàn)了用cookie技術(shù)自動(dòng)免登錄12306。在今天上午9.00 (2025-01-07)搶票(2025-01-21)成功。

如何使用:1.比如9.00正式搶票,可以在8.53左右二維碼掃描登錄,當(dāng)然是要配合下方程序,這樣9.00可以正式搶票無(wú)需登錄,cookie也不會(huì)失效。2.直接在8.59.58左右運(yùn)行此程序,即可。

今日實(shí)戰(zhàn):今天運(yùn)行其實(shí)是搶到了,但是他一直在等待,也就是頁(yè)面一直停在哪里,其實(shí)那個(gè)時(shí)候你可以用手點(diǎn)擊操作,因?yàn)槲覀兪沁M(jìn)來(lái)了,不需要去管程序的對(duì)錯(cuò)。也就是說(shuō),程序幫你操作到哪一步,如果卡住了,直接上手。這也讓我有想做一個(gè)多線程的想法,將多線程加入這個(gè)程序中。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、cookie免登錄

1.cookie的講解: Cookie也被稱為小型文本文件,是由服務(wù)器發(fā)送到用戶瀏覽器并保存在用戶計(jì)算機(jī)或移動(dòng)設(shè)備上的一種數(shù)據(jù)形式。以下是對(duì)Cookie的詳細(xì)解釋:

定義與工作原理定義:Cookie是網(wǎng)站在用戶瀏覽器中創(chuàng)建和存儲(chǔ)的小型文本文件,用于辨別用戶身份和存儲(chǔ)用戶相關(guān)信息。工作原理:當(dāng)用戶訪問(wèn)某個(gè)網(wǎng)站時(shí),服務(wù)器會(huì)在用戶的瀏覽器中創(chuàng)建一個(gè)Cookie,并將其存儲(chǔ)在用戶的計(jì)算機(jī)或移動(dòng)設(shè)備上。當(dāng)用戶再次訪問(wèn)該網(wǎng)站時(shí),瀏覽器會(huì)將Cookie發(fā)送回服務(wù)器,服務(wù)器通過(guò)讀取Cookie中的信息來(lái)識(shí)別用戶身份或獲取用戶的個(gè)性化設(shè)置。

2.獲取cookie的代碼如下: 程序運(yùn)行后會(huì)打開(kāi)登錄界面,然后使用的二維碼登錄。這樣程序可以得到當(dāng)前的cookie值字段,在cookie失效前無(wú)須再進(jìn)行登錄。

<0001>初始化瀏覽器的函數(shù)— browser_initial():

def browser_initial():
    """"
    進(jìn)行瀏覽器初始化
    """
    # os.chdir('E:\\pythonwork')

    # 1.將加載項(xiàng)配置到啟動(dòng)瀏覽器中 打開(kāi)/創(chuàng)建瀏覽器對(duì)象
    browser = webdriver.Chrome(service=Service(path))
    # 2.網(wǎng)址 https://kyfw.12306.cn/otn/resources/login.html -- 登錄界面
    # https://kyfw.12306.cn/otn/leftTicket/init 選票界面可以 判斷是否登錄
    log_url = 'https://kyfw.12306.cn/otn/resources/login.html'
    return log_url, browser

<0002> 獲得cookie的函數(shù)— get_cookies(browser):

def get_cookies(browser):
    """
    獲取cookies保存至本地
    """
    browser.get(log_url)
    time.sleep(15)  # 進(jìn)行掃碼
    # selenium_login(browser)
    # print("登錄成功")
    dictCookies = browser.get_cookies()  # 獲取list的cookies
    string_Cookies = json.dumps(dictCookies)  # 轉(zhuǎn)換成字符串保存
    with open('string_cookies.json', 'w') as f:
        f.write(string_Cookies)
    print('cookies保存成功!')

if __name__ == "__main__":
    log_url, browser = browser_initial()
    browser.get(log_url)
    # 1.二維碼登錄 保存 -- cookie -- 用完關(guān)掉
    get_cookies(browser)

運(yùn)行后就會(huì)變成二維碼,找到二維碼,讓手機(jī)自動(dòng)登錄。

用手機(jī)掃描即可,這個(gè)操作是設(shè)置了時(shí)間time.sleep(15),你也可以在get_cookies(browser)中修改此代碼,只有自己掃了登錄成功,后續(xù)出現(xiàn)的cookie保存成功,才是最新的cookie值。

二、cookie登錄函數(shù)與自動(dòng)化 – 可以實(shí)現(xiàn)cookie值的匹配–實(shí)現(xiàn)自動(dòng)登錄 – 無(wú)須手機(jī)驗(yàn)證碼

1.login_cookie函數(shù)代碼

代碼如下(示例):

def login_cookie(log_url, browser):
    """
    從本地讀取cookies并刷新頁(yè)面,成為已登錄狀態(tài)
    """
    # browser.get(log_url)
    with open('string_cookies.json', 'r', encoding='utf8') as f:
        listCookies = json.loads(f.read())

    # 往browser里添加cookies
    for cookie in listCookies:
        browser.add_cookie(cookie)
   
    time.sleep(1)
    # 如果是已登錄的界面,免登錄應(yīng)該打開(kāi)這個(gè)界面 https://kyfw.12306.cn/otn/view/index.html
    # https://www.12306.cn/index/ --12306官網(wǎng)首頁(yè)
    browser.get(log_url)
    return browser

2.selenium_run(driver)函數(shù)代碼 – 這里是可以到預(yù)定,然后搶票成功要10分鐘之內(nèi)自己付款。

def selenium_run(driver):

    # 11.1 選擇出發(fā)的城市--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#fromStationText").click()
    # 11.2 選擇出發(fā)的城市--選擇城市
    driver.find_element(by="css selector", value="#fromStationText").send_keys(login["from_city"])
    # 11.3 選擇出發(fā)的城市--回車確定
    driver.find_element(by="css selector", value="#fromStationText").send_keys(Keys.ENTER)

    # 12.1 選擇目的的城市--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#toStationText").click()
    # 12.2 選擇目的的城市--選擇城市
    driver.find_element(by="css selector", value="#toStationText").send_keys(login['to_city'])
    # 12.3 選擇目的的城市--回車確定
    driver.find_element(by="css selector", value="#toStationText").send_keys(Keys.ENTER)

    # 13.1 選擇出發(fā)的日期--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#train_date").clear()
    # 12.2 選擇出發(fā)的日期--選擇城市
    driver.find_element(by="css selector", value="#train_date").send_keys(login['train_date'])
    # 12.3 選擇出發(fā)的日期--回車確定
    driver.find_element(by="css selector", value="#train_date").send_keys(Keys.ENTER)
    # # 12.4 點(diǎn)擊--顯示全部可預(yù)訂的車次
    # driver.find_element(by="css selector", value="avail_ticket").click()
    # 12.5 點(diǎn)擊查詢
    driver.implicitly_wait(5)
    driver.find_element(by="css selector", value="#query_ticket").click()
    # num = int(input('請(qǐng)輸入您想要的車次:'))
    # 點(diǎn)擊預(yù)訂按鈕 -- 選擇要預(yù)定的是第幾躺車 -- 這個(gè)代碼沒(méi)有問(wèn)題
    # driver.find_element(by="css selector", value='#ticket_65000G279007_01_03 > td.no-br').click()

    # //div//tbody[@id="queryLeftTable"]/tr[contains(@id,"ticket")]/@id -- 但是selenium的find_elements不可以用@id找到元素。
    ticket_list = driver.find_elements(by="xpath", value='//div//tbody[@id="queryLeftTable"]/tr[contains(@id,"ticket")]')
    ticket_num = ticket_list[login['num']].get_attribute("id")
    ticket_pre = ticket_num + ' > td.no-br'
    # 12.6 點(diǎn)擊想要車次的預(yù)定按鈕
    driver.find_element(by="css selector", value=f"#{ticket_pre}").click()

    # 13.1 勾選想要的乘車人
    driver.find_element(by="css selector", value='#normalPassenger_0').click()

    # 13.2 提交訂單
    driver.find_element(by="css selector", value='#submitOrder_id').click()
    driver.implicitly_wait(5)
    # 13.3 選擇靠窗的1F的位置 #erdeng1 > ul:nth-child(4) > li:nth-child(2) 是在瀏覽器右鍵copy selector選擇出來(lái)的
    # # 1F是不可以選中的
    driver.find_element(by="css selector", value='#erdeng1 > ul:nth-child(4) > li:nth-child(2)').click()
    # 13.4 再次確認(rèn)提交
    time.sleep(1)
    # 如果此處沒(méi)有響應(yīng)多點(diǎn)擊就好 -- 加上 "try -- except"
    driver.find_element(by="css selector", value='#qr_submit_id').click()
    # driver.find_element(by="css selector", value='#qr_submit_id').click()
    # driver.find_element(by="css selector", value='#qr_submit_id').click()

三、完整的代碼

1.代碼主體

先運(yùn)行g(shù)et_cookies(browser),注釋掉后面的兩句代碼,二維碼登錄以后,再注釋掉get_cookies(browser),運(yùn)行后面兩個(gè)即可。

if __name__ == "__main__":
    log_url, browser = browser_initial()
    browser.get(log_url)
    # 1.二維碼登錄 保存 -- cookie -- 用完關(guān)掉
    get_cookies(browser)
    # 2.自動(dòng)登錄
    driver = login_cookie(log_url, browser)
    selenium_run(driver)

2.完整代碼

import time
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
path = r'D:\game\chromedriver.exe'


def browser_initial():
    """"
    進(jìn)行瀏覽器初始化
    """
    # os.chdir('E:\\pythonwork')

    # 1.將加載項(xiàng)配置到啟動(dòng)瀏覽器中 打開(kāi)/創(chuàng)建瀏覽器對(duì)象
    browser = webdriver.Chrome(service=Service(path))
    # 2.網(wǎng)址 https://kyfw.12306.cn/otn/resources/login.html -- 登錄界面
    # https://kyfw.12306.cn/otn/leftTicket/init 選票界面可以 判斷是否登錄
    log_url = 'https://kyfw.12306.cn/otn/leftTicket/init'
    return log_url, browser


def get_cookies(browser):
    """
    獲取cookies保存至本地
    """
    browser.get(log_url)
    time.sleep(15)  # 進(jìn)行掃碼
    # selenium_login(browser)
    # print("登錄成功")
    dictCookies = browser.get_cookies()  # 獲取list的cookies
    string_Cookies = json.dumps(dictCookies)  # 轉(zhuǎn)換成字符串保存
    with open('string_cookies.json', 'w') as f:
        f.write(string_Cookies)
    print('cookies保存成功!')

def login_cookie(log_url, browser):
    """
    從本地讀取cookies并刷新頁(yè)面,成為已登錄狀態(tài)
    """
    # 這個(gè)是12306的登錄界面 https://kyfw.12306.cn/otn/resources/login.html
    # browser.get(log_url)
    with open('string_cookies.json', 'r', encoding='utf8') as f:
        listCookies = json.loads(f.read())

    # 往browser里添加cookies
    for cookie in listCookies:
        # cookie_dict = {
        #     'domain': cookie.get('domain'),
        #     # "expires": cookie.get('value'),
        #     'httpOnly': cookie.get('httpOnly'),
        #     'name': cookie.get('name'),
        #     'path': cookie.get('path'),
        #     "sameSite": "Lax",
        #     'Secure': cookie.get('Secure'),
        #     'value': cookie.get('value'),
        # }
        browser.add_cookie(cookie)
    # browser.refresh()
    time.sleep(1)
    # 如果是已登錄的界面,可以免登錄直接進(jìn) https://kyfw.12306.cn/otn/view/index.html
    # https://www.12306.cn/index/ --12306官網(wǎng)首頁(yè)
    browser.get(log_url)
    return browser

def selenium_run(driver):

    # 11.1 選擇出發(fā)的城市--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#fromStationText").click()
    # 11.2 選擇出發(fā)的城市--選擇城市
    driver.find_element(by="css selector", value="#fromStationText").send_keys(login["from_city"])
    # 11.3 選擇出發(fā)的城市--回車確定
    driver.find_element(by="css selector", value="#fromStationText").send_keys(Keys.ENTER)

    # 12.1 選擇目的的城市--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#toStationText").click()
    # 12.2 選擇目的的城市--選擇城市
    driver.find_element(by="css selector", value="#toStationText").send_keys(login['to_city'])
    # 12.3 選擇目的的城市--回車確定
    driver.find_element(by="css selector", value="#toStationText").send_keys(Keys.ENTER)

    # 13.1 選擇出發(fā)的日期--點(diǎn)擊那個(gè)框
    driver.find_element(by="css selector", value="#train_date").clear()
    # 12.2 選擇出發(fā)的日期--選擇城市
    driver.find_element(by="css selector", value="#train_date").send_keys(login['train_date'])
    # 12.3 選擇出發(fā)的日期--回車確定
    driver.find_element(by="css selector", value="#train_date").send_keys(Keys.ENTER)
    # # 12.4 點(diǎn)擊--顯示全部可預(yù)訂的車次
    # driver.find_element(by="css selector", value="avail_ticket").click()
    # 12.5 點(diǎn)擊查詢
    driver.implicitly_wait(5)
    driver.find_element(by="css selector", value="#query_ticket").click()
    # num = int(input('請(qǐng)輸入您想要的車次:'))
    # 點(diǎn)擊預(yù)訂按鈕 -- 選擇要預(yù)定的是第幾躺車 -- 這個(gè)代碼沒(méi)有問(wèn)題
    # driver.find_element(by="css selector", value='#ticket_65000G279007_01_03 > td.no-br').click()

    # //div//tbody[@id="queryLeftTable"]/tr[contains(@id,"ticket")]/@id -- 但是selenium的find_elements不可以用@id找到元素。
    ticket_list = driver.find_elements(by="xpath", value='//div//tbody[@id="queryLeftTable"]/tr[contains(@id,"ticket")]')
    ticket_num = ticket_list[login['num']].get_attribute("id")
    ticket_pre = ticket_num + ' > td.no-br'
    # 12.6 點(diǎn)擊想要車次的預(yù)定按鈕
    driver.find_element(by="css selector", value=f"#{ticket_pre}").click()

    # 13.1 勾選想要的乘車人
    driver.find_element(by="css selector", value='#normalPassenger_0').click()

    # 13.2 提交訂單
    driver.find_element(by="css selector", value='#submitOrder_id').click()
    driver.implicitly_wait(5)
    # 13.3 選擇靠窗的1F的位置 #erdeng1 > ul:nth-child(4) > li:nth-child(2) 是在瀏覽器右鍵copy selector選擇出來(lái)的
    # # 1F是不可以選中的
    driver.find_element(by="css selector", value='#erdeng1 > ul:nth-child(4) > li:nth-child(2)').click()
    # 13.4 再次確認(rèn)提交
    time.sleep(1)
    # 如果此處沒(méi)有響應(yīng)多點(diǎn)擊就好 -- 加上 "try -- except"
    # driver.find_element(by="css selector", value='#qr_submit_id').click()
    # driver.find_element(by="css selector", value='#qr_submit_id').click()
    # driver.find_element(by="css selector", value='#qr_submit_id').click()



f = open('login.json', encoding='utf-8').read()
login = json.loads(f)

if __name__ == "__main__":
    log_url, browser = browser_initial()
    browser.get(log_url)
    # 1.二維碼登錄 保存 -- cookie -- 用完關(guān)掉
    # get_cookies(browser)
    # 計(jì)算程序運(yùn)行時(shí)間
    # start = time.perf_counter()
    # 2.自動(dòng)登錄

    driver = login_cookie(log_url, browser)
    # # 如果沒(méi)有登錄那就自動(dòng)登錄 -- 然后獲得cookie自動(dòng)保存
    # # if browser.find_element(by="css selector", value="#login_user").text == "登錄":
    # # 3.自動(dòng)買票
    selenium_run(driver)
    # end = time.perf_counter()
    # runTime = end - start
    # runTime_ms = runTime * 1000
    # # 輸出運(yùn)行時(shí)間
    # print("運(yùn)行時(shí)間:", runTime, "秒")
    # print("運(yùn)行時(shí)間:", runTime_ms, "毫秒")

3.login.json – 解釋這個(gè)文件

圖中字典信息:代表的是地址日期,num代表的是第幾躺車,id_card身份證,后4位。這里面有用賬戶密碼登錄的信息,雖然這里用不上,但是我們上一個(gè)帖子是用這個(gè)的,所以我把它寫在了一起。

四、總結(jié)

1.幾個(gè)注意:代碼中的url最好是用登錄成功的頁(yè)面,而非登錄頁(yè)面。不然會(huì)一直顯示要登錄。

log_url = 'https://kyfw.12306.cn/otn/resources/login.html'
log_url = 'https://kyfw.12306.cn/otn/leftTicket/init'  ##---用這個(gè)

2.改進(jìn):今天真正的實(shí)戰(zhàn)我也挺滿意的就是想著再改進(jìn)一下,看看多線程是否可以直接搶到。明天就要真正搶票啦 – 給大家看看今天的戰(zhàn)果。

以上就是使用python實(shí)現(xiàn)無(wú)需驗(yàn)證碼免登錄12306搶票功能的詳細(xì)內(nèi)容,更多關(guān)于python免登錄12306搶票的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決Python一行輸出不顯示的問(wèn)題

    解決Python一行輸出不顯示的問(wèn)題

    今天小編就為大家分享一篇解決Python一行輸出不顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python中uuid模塊的應(yīng)用實(shí)例詳解

    Python中uuid模塊的應(yīng)用實(shí)例詳解

    這篇文章主要介紹了Python中uuid模塊應(yīng)用的相關(guān)資料,該模塊提供了多種方法生成UUID,包括uuid1()、uuid3()、uuid4()和uuid5(),并解釋了UUID的格式,UUID在數(shù)據(jù)庫(kù)、分布式系統(tǒng)和網(wǎng)絡(luò)協(xié)議中廣泛應(yīng)用,是處理唯一標(biāo)識(shí)符的有力工具,需要的朋友可以參考下
    2024-11-11
  • Python3.5字符串常用操作實(shí)例詳解

    Python3.5字符串常用操作實(shí)例詳解

    這篇文章主要介紹了Python3.5字符串常用操作,結(jié)合實(shí)例形式總結(jié)分析了Python3.5字符串輸入、輸出、格式化、切片以及各種常用操作函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-05-05
  • python Django 反向訪問(wèn)器的外鍵沖突解決

    python Django 反向訪問(wèn)器的外鍵沖突解決

    這篇文章主要介紹了python Django 反向訪問(wèn)器的外鍵沖突解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼

    python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼

    這篇文章主要介紹了python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼的相關(guān)資料,講解了python如何解決接口測(cè)試獲取手機(jī)驗(yàn)證碼問(wèn)題,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 切換路徑在Jupyter里調(diào)用本地文件的操作

    切換路徑在Jupyter里調(diào)用本地文件的操作

    這篇文章主要介紹了切換路徑在Jupyter里調(diào)用本地文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python中將字典改造為對(duì)象的方法

    python中將字典改造為對(duì)象的方法

    這篇文章主要介紹了python中將字典改造為對(duì)象的方法,在實(shí)際項(xiàng)目中,當(dāng)使用json模塊加載一個(gè)深度很深的字典類型的json文件時(shí),使用字典的訪問(wèn)方式,將會(huì)出現(xiàn)很多中括號(hào),即不直觀也不美觀,可以將這個(gè)字典轉(zhuǎn)化為對(duì)象,使得可以用.的方式訪問(wèn),需要的朋友可以參考下
    2023-11-11
  • 如何使用python的ctypes調(diào)用醫(yī)保中心的dll動(dòng)態(tài)庫(kù)下載醫(yī)保中心的賬單

    如何使用python的ctypes調(diào)用醫(yī)保中心的dll動(dòng)態(tài)庫(kù)下載醫(yī)保中心的賬單

    這篇文章主要介紹了如何使用python的ctypes調(diào)用醫(yī)保中心的dll動(dòng)態(tài)庫(kù)下載醫(yī)保中心的賬單,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python類名和類方法cls修改類變量的值

    python類名和類方法cls修改類變量的值

    這篇文章主要介紹了python類名和類方法cls修改類變量的值,通過(guò)類對(duì)象是無(wú)法修改類變量的值的,本質(zhì)其實(shí)是給類對(duì)象新添加?name?和?age?變量,下文更多的相關(guān)介紹需要的小伙伴可任意參考一下
    2022-04-04
  • jupyternotebook 撤銷刪除的操作方式

    jupyternotebook 撤銷刪除的操作方式

    這篇文章主要介紹了jupyternotebook 撤銷刪除的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04

最新評(píng)論

响水县| 宜黄县| 双城市| 于都县| 淄博市| 广水市| 内乡县| 滦南县| 含山县| 西昌市| 潼南县| 额济纳旗| 镇坪县| 宣城市| 库车县| 江西省| 凤城市| 微山县| 大兴区| 车致| 扬中市| 奎屯市| 马关县| 松潘县| 商水县| 依安县| 武宁县| 定南县| 洱源县| 城市| 宁河县| 富阳市| 祁门县| 贡觉县| 定西市| 尤溪县| 鹤峰县| 嘉鱼县| 柘荣县| 卓资县| 深水埗区|