婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python解決12306登錄驗證碼的實現(xiàn)

python解決12306登錄驗證碼的實現(xiàn)

熱門標(biāo)簽:地圖制圖標(biāo)注位置改變是移位嗎 房產(chǎn)電銷外呼系統(tǒng) 地圖標(biāo)注的意義點 蓋州市地圖標(biāo)注 南京銷售外呼系統(tǒng)軟件 地圖標(biāo)注微信發(fā)送位置不顯示 浙江電銷卡外呼系統(tǒng)好用嗎 上海機(jī)器人外呼系統(tǒng)哪家好 315電話機(jī)器人廣告

在家無聊,線代和高數(shù)看不懂,整點事情干,就準(zhǔn)備預(yù)定回學(xué)校的高鐵票,于是就有了這個文章

準(zhǔn)備工作

1.pip安裝chromediver,當(dāng)然也可以手動解壓(網(wǎng)上的教程好像沒有提到pip,手動安裝到C盤pycharm里面的Scripts就行了)
chromedriver.storage.googleapis.com/index.html這是chromedriver文件官網(wǎng),在chrome里面設(shè)置查看自己的版本,然后找對應(yīng)的版本就完了

2.注冊個超級鷹,http://www.chaojiying.com/contact.html,挺厲害的打碼平臺,微信公眾號綁定一下賬號給1000積分,足夠干12306驗證碼了

開始實戰(zhàn)講解

1.選擇chrome打開12306然后切換到賬號登錄

默認(rèn)是掃碼登錄


F12然后點擊賬號登錄


3.復(fù)制xPath,/html/body/div[2]/div[2]/ul/li[2]/a


代碼實現(xiàn)

from selenium.webdriver import Chrome
web = Chrome()
web.get('https://kyfw.12306.cn/otn/resources/login.html')
time.sleep(3)
web.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()

2.下載驗證碼(截屏也可以)然后發(fā)送給超級鷹

超級鷹官網(wǎng)有個官方文檔,下載然后pychram打開,其實就很簡單,然后把賬號密碼改成你自己的,

from chaojiying import Chaojiying_Client

驗證碼需要時間加載,所以要sleep(3)就夠了,

3.拿到坐標(biāo)然后模擬點擊
好像這個官方叫什么偏移量,挺高大上的,說白了就是建立一個坐標(biāo)系,給個x,y然后點擊就完了,默認(rèn)左上方是原點

    for pre_location in location_list:
        #切割出來x,y坐標(biāo)
        location = pre_location.split(',')
        x = int(location[0])
        y = int(location[1])
        ActionChains(web).move_to_element_with_offset(img,x,y).click().perform()

4.登錄以后有個滑動驗證
現(xiàn)在我還沒有找到方法控制滑動速度,勻速運(yùn)動,但是12306并沒有因為這個驗證失敗

ActionChains(web).drag_and_drop_by_offset(button,340,0).perform()

button是那個滑塊的Xpath,我記得好像是長度330,340肯定是夠用了,那個0就是豎y的方向上的滑動

12306靠webdriver判斷是不是爬蟲

剛開始12306圖片和滑動驗證通過以后一直說驗證失敗,百思不得其解,百度發(fā)現(xiàn)是因為這個


這是正常頁面下的,也就是我改了以后的,加一個這個代碼,欺騙一下

def trick_not_chromedriver():
    option = Options()
    option.add_argument('--disable-blink-features=AutomationControlled')
    return option

這個要調(diào)用在前面,靠后一點就不行了

全部代碼

from selenium.webdriver import Chrome
import requests,time
from hashlib import md5
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 圖片字節(jié)
        codetype: 題目類型 參考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:報錯題目的圖片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()
#獲取驗證碼
def get_verify_img(web):
    web.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
    time.sleep(5)
    verify_img = web.find_element_by_xpath('//*[@id="J-loginImg"]')
    return verify_img
#識別驗證碼返回坐標(biāo)
def discern_verify_img(verify_img):
    chaojiying = Chaojiying_Client('超級鷹賬號', '密碼', '軟件ID')
    responce = chaojiying.PostPic(verify_img.screenshot_as_png, 9004)
    pre_location = responce['pic_str']
    location_list = pre_location.split("|")
    # 把split寫錯了,卡了半天
    # type_pre_location = type(pre_location)
    return location_list
    # return type_pre_location
#拿到坐標(biāo)模擬點擊
def click_and_enter(web,location_list,img):
    for pre_location in location_list:
        #切割出來x,y坐標(biāo)
        location = pre_location.split(',')
        x = int(location[0])
        y = int(location[1])
        ActionChains(web).move_to_element_with_offset(img,x,y).click().perform()
def enter(web):
    # input()
    web.find_element_by_xpath('//*[@id="J-userName"]').send_keys('賬號')
    web.find_element_by_xpath('//*[@id="J-password"]').send_keys('密碼')
    web.find_element_by_xpath('//*[@id="J-login"]').click()
#滑動驗證
def move_verify(web):
    button = web.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
    ActionChains(web).drag_and_drop_by_offset(button,340,0).perform()
# 騙12306這不是chromedriver
def trick_not_chromedriver():
    option = Options()
    option.add_argument('--disable-blink-features=AutomationControlled')
    return option
#現(xiàn)在有一個疫情防控的確認(rèn)按鈕,點一下這個
def yqfk(web):
    web.get('https://kyfw.12306.cn/otn/leftTicket/init')
    time.sleep(1)
    web.find_element_by_xpath('//*[@id="qd_closeDefaultWarningWindowDialog_id"]').click()
#進(jìn)入查詢界面,思路正則表達(dá)式,不可信
def get_stick_text(web):
    web.get('https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2021-04-16leftTicketDTO.from_station=TNVleftTicketDTO.to_station=CZFpurpose_codes=0X00')
    response = web.find_element_by_xpath('/html/body/pre').text
    return (response)
#父子節(jié)點一個一個找,顯示余票
if __name__ == '__main__':
    web = Chrome(options=trick_not_chromedriver())
    web.get('https://kyfw.12306.cn/otn/resources/login.html')
    time.sleep(5)
    # click_and_enter(discern_verify_img(get_verify_img()))
    img = get_verify_img(web)
    click_and_enter(web,discern_verify_img(img),img)
    time.sleep(5)
    enter(web)
    time.sleep(5)
    move_verify(web)
    time.sleep(1)
    yqfk(web)
    time.sleep(2)
    get_verify_img(web)

已經(jīng)可以登錄的,結(jié)果就是這個界面


還有一個想法是余票檢測,在搞了,應(yīng)該快了

到此這篇關(guān)于python解決12306登錄驗證碼的實現(xiàn)的文章就介紹到這了,更多相關(guān)python 12306登錄驗證碼 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python網(wǎng)絡(luò)爬蟲之模擬登錄 自動獲取cookie值 驗證碼識別的具體實現(xiàn)
  • 教你怎么用python批量登錄帶有驗證碼的網(wǎng)站
  • python 模擬網(wǎng)站登錄——滑塊驗證碼的識別
  • 用python登錄帶弱圖片驗證碼的網(wǎng)站
  • 基于Python實現(xiàn)原生的登錄驗證碼詳情

標(biāo)簽:陽泉 克拉瑪依 雙鴨山 金華 日照 赤峰 臨汾 貴州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python解決12306登錄驗證碼的實現(xiàn)》,本文關(guān)鍵詞  python,解決,12306,登錄,驗證,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python解決12306登錄驗證碼的實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于python解決12306登錄驗證碼的實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人综合自拍| 国产69精品久久久久777| 中文字幕制服丝袜成人av | 成人午夜激情在线| 色av一区二区| 久久日韩粉嫩一区二区三区| 福利一区在线观看| 欧美性受xxxx黑人xyx性爽| 国产精品1区2区3区在线观看| 欧美日韩一区在线观看| 亚洲精品视频在线看| 成人动漫精品一区二区| 日韩电影在线一区| 国产剧情一区二区| 欧美日韩精品欧美日韩精品| 国产午夜精品一区二区三区嫩草| 亚洲综合自拍偷拍| 国产精品一区二区三区99| 欧美四级电影在线观看| 国产亚洲人成网站| 亚洲综合一区二区| 不卡一区二区三区四区| 91麻豆精品国产| 欧美日韩在线播放一区| 国产日韩综合av| **性色生活片久久毛片| 久久不见久久见中文字幕免费| 日韩一区二区电影在线| 韩国v欧美v亚洲v日本v| k8久久久一区二区三区| www.欧美色图| 欧美国产乱子伦 | 欧美精品在线观看一区二区| 中文字幕五月欧美| 国产福利一区二区三区| 欧美成人三级电影在线| 天天爽夜夜爽夜夜爽精品视频| 91美女片黄在线| 国产欧美精品国产国产专区| 国产日韩欧美综合在线| 日本欧美韩国一区三区| 精品一区二区成人精品| 欧美区在线观看| 国产精品自在在线| 亚洲精品高清视频在线观看| 美女网站色91| 国产91综合网| 久久婷婷综合激情| 狠狠色伊人亚洲综合成人| 欧美大片拔萝卜| 激情都市一区二区| 日韩一级欧美一级| 日韩影院在线观看| 欧美精品乱码久久久久久| 亚洲高清中文字幕| 在线播放91灌醉迷j高跟美女| 亚洲一级片在线观看| 欧美人伦禁忌dvd放荡欲情| 亚洲精品国产一区二区三区四区在线| 欧美韩日一区二区三区四区| 国产精品妹子av| 在线成人高清不卡| 国产一区二区三区日韩| 欧美精品一区二区三区久久久 | 7777精品伊人久久久大香线蕉| 久久精品噜噜噜成人av农村| 久久久久高清精品| 日本一区二区三区四区在线视频| 中文字幕亚洲欧美在线不卡| 国产一区二区不卡| 亚洲动漫第一页| 久久久亚洲高清| 亚洲免费大片在线观看| 成人性生交大片免费看在线播放| 国产精品久久久久四虎| av一区二区三区在线| 亚洲综合视频在线| 日韩小视频在线观看专区| 国产成人在线色| 亚洲精品国产视频| 欧美肥妇bbw| 狠狠色伊人亚洲综合成人| 久久婷婷国产综合国色天香| 成人午夜av在线| 亚洲国产成人高清精品| 日韩欧美在线一区二区三区| 成人久久视频在线观看| 亚洲国产欧美在线| 日韩精品一区二区三区视频 | 日本aⅴ免费视频一区二区三区 | 视频一区在线视频| 亚洲精品一线二线三线无人区| 成人午夜在线播放| 亚洲精品国产第一综合99久久| 777久久久精品| 成人va在线观看| 日精品一区二区| 国产精品乱人伦| 欧美一区二区三区爱爱| 高清日韩电视剧大全免费| 一区二区三区视频在线观看| 久久久久国产精品免费免费搜索| 色播五月激情综合网| 国产精品小仙女| 午夜精品成人在线视频| 欧美激情艳妇裸体舞| 欧美一区二区三区播放老司机| 91麻豆精品视频| 国产高清久久久| 日韩精品乱码免费| 亚洲精品国产成人久久av盗摄| 久久综合色8888| 91精品国产福利| 色噜噜狠狠一区二区三区果冻| 国产麻豆精品久久一二三| 三级欧美韩日大片在线看| 亚洲乱码国产乱码精品精可以看 | 久久嫩草精品久久久久| 欧美日本一道本| 在线观看av一区| 国产乱码精品一区二区三| 日韩av不卡在线观看| 亚洲一区二区三区在线看| 欧美国产日韩一二三区| 国产视频一区二区在线| 亚洲精品一区在线观看| 日韩欧美一级二级| 制服丝袜亚洲网站| 欧美日韩性生活| 欧美三级日韩三级| 91福利国产精品| 在线亚洲欧美专区二区| 91福利国产成人精品照片| 色综合天天综合网国产成人综合天 | 美腿丝袜一区二区三区| 性感美女久久精品| 亚洲图片欧美视频| 午夜av区久久| 午夜av电影一区| 美国毛片一区二区三区| 激情综合色丁香一区二区| 久久99日本精品| 国产精品一区二区x88av| 国产精华液一区二区三区| 国产盗摄精品一区二区三区在线| 国产精品自在在线| av在线一区二区| 在线视频一区二区三区| 色久优优欧美色久优优| 欧美日韩一区二区在线视频| 欧美美女bb生活片| 精品久久久久久亚洲综合网| 欧美xxxxx裸体时装秀| 国产婷婷一区二区| 国产精品久久久久久福利一牛影视| 国产精品久久毛片av大全日韩| 亚洲欧美日韩国产综合在线| 亚洲成人免费电影| 久久97超碰色| 成a人片国产精品| 欧美日韩高清一区二区三区| 日韩免费看的电影| 国产午夜亚洲精品午夜鲁丝片| 中文一区一区三区高中清不卡| 1000精品久久久久久久久| 亚洲成av人影院在线观看网| 玖玖九九国产精品| 国产.欧美.日韩| 欧美日韩视频第一区| 久久综合久久综合久久| 亚洲免费av网站| 美女视频黄免费的久久| av在线不卡免费看| 欧美一区二区日韩| 国产精品福利影院| 日本vs亚洲vs韩国一区三区二区| 国产精品一级片| 91福利精品第一导航| 26uuuu精品一区二区| 亚洲另类在线一区| 国产一区二区久久| 欧美日韩免费观看一区二区三区| 久久亚洲一级片| 亚洲va韩国va欧美va精品| 国产一区二区三区高清播放| 欧美日韩中文字幕精品| 日本一区二区久久| 美腿丝袜亚洲色图| 91久久精品一区二区三区| 香蕉成人伊视频在线观看| 国产精品一区二区三区乱码| 欧美日产国产精品| 亚洲国产精品黑人久久久| 天堂成人免费av电影一区| 粗大黑人巨茎大战欧美成人| 日韩欧美国产综合在线一区二区三区| 国产精品久久久久久久岛一牛影视 | 国产农村妇女毛片精品久久麻豆 | av男人天堂一区| 日韩精品一区二区三区swag |