日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python+selenium實現12306模擬登錄的步驟

瀏覽:20日期:2022-06-29 13:42:46
簡介:

這里是利用了selenium+圖片識別驗證,來實現12306的模擬登錄,中間也參考了好幾個項目,實現了這個小demo,中間也遇到了很多的坑,主要難點在于圖片識別和滑動驗證這兩個方面,圖片識別是利用超級鷹的服務進行驗證識別的,其次一個難點就是在賬戶密碼和圖片識別都過了以后的滑動驗證,因為12306網站做了反爬,利用selenium滑動時,會報錯,提示你一直刷新,這里也是更改了滑動框。

技術棧:

python、selenium、圖片驗證、滑動驗證

思路:

提前臥槽,12306網站的并發(fā)真的牛逼。

在模擬登錄的時候,第一個難點就是圖片驗證,這里不會底層的算法,只能通過圖片識別平臺的api接口服務進行解密,返回驗證坐標以后,通過selenium的點擊動能,進行點擊,在這里提前說明一下,網上有很多項目在實例化瀏覽器時,需要調整桌面分辨率,然后最大化窗口,這樣截屏才不會出現截不全的情況,我這邊是比較省事的,直接用xpath定位到驗證碼的png文件。直接寫入到本地,然后傳到圖片識別平臺進行識別。

里面涉及了一些selenium的方法,我基本上都是現查現用,比如按住鼠標不放、按左鍵什么的。

具體的代碼和注解貼在下面,

from selenium import webdriverfrom hashlib import md5import requestsimport timefrom selenium.webdriver import ActionChains # 這個類是超級鷹平臺寫的調用服務的接口代碼,也是比較容易看懂的class Chaojiying_Client(object): def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode(’utf8’)self.password = md5(password).hexdigest()self.soft_id = soft_idself.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() # 這里進入模擬登錄的主程序 # 實例化瀏覽器,并且最大化。然后請求12306主網站,我這里是從首頁請求的,大家可以直接從登陸頁面請求browser = webdriver.Chrome()browser.maximize_window()browser.get(’http://12306.cn/’)time.sleep(5)# 因為是從首頁請求的,所以下面有兩個點擊的動作,都是為了點進登陸頁面browser.find_element_by_xpath(’//*[@id='J-header-login']/a[1]’).click()time.sleep(0.3)# 這里比較重要了,這里就是利用這個代碼,來更改selenium中的滑動功能,讓網站不報錯script = ’Object.defineProperty(navigator,'webdriver',{get:()=>undefined,});’browser.execute_script(script)time.sleep(1)# 這里進入帳號登錄browser.find_element_by_xpath(’/html/body/div[2]/div[2]/ul/li[2]/a’).click()time.sleep(0.3)# 這里直接定位驗證碼的png文件,然后保存img = browser.find_element_by_xpath(’//*[@id='J-loginImg']’)img.screenshot(’cde.png’)# 調用超級鷹的參數chaojiying = Chaojiying_Client(’用戶名’, ’密碼’, ’ID’)# 這個在超級鷹的實例代碼中有解釋im = open(’../12306/cde.png’, ’rb’).read()# 注意,這里返回的是一個字典格式,所以直接取要用的key,來返回坐標result = chaojiying.PostPic(im, 9004)[’pic_str’]print(result)# 這里就是處理超級鷹返回坐標的方法了all_list = []# 通過判斷超級鷹返回坐標的格式進行坐標處理,# 返回的坐標有兩種形式,一種是以|隔開的,一種是用,隔開的,對應下面兩種處理方式# 處理好的坐標存入listif ’|’ in result: list = result.split(’|’) for i in range(len(list)):x_y = []x = int(list[i].split(’,’)[0])y = int(list[i].split(’,’)[1])x_y.append(x)x_y.append(y)all_list.append(x_y)else: x_y = [] x = int(result.split(’,’)[0]) y = int(result.split(’,’)[1]) x_y.append(x) x_y.append(y) all_list.append(x_y)print(all_list) # 處理好的坐標進行循環(huán),并帶入selenium進行點擊點擊for l in all_list: x = l[0] y = l[1] ActionChains(browser).move_to_element_with_offset(img, x, y).click().perform() time.sleep(0.5)# 圖片點擊好以后,向表單內發(fā)送賬戶密碼browser.find_element_by_xpath(’//*[@id='J-userName']’).send_keys(’賬號’)browser.find_element_by_xpath(’//*[@id='J-password']’).send_keys(’密碼’)# 進行點擊登錄按鈕browser.find_element_by_xpath(’//*[@id='J-login']’).click()time.sleep(2)# 下面就是滑動模塊了# 上面已經更改過selenium的滑動模塊,所以這里就可以直接定位到按鈕的位置,進行點擊滑動span = browser.find_element_by_xpath(’//*[@id='nc_1_n1z']’)action = ActionChains(browser)# 這里是selenium的方法,按住點擊不放action.click_and_hold(span)# 下面就是滑動了action.drag_and_drop_by_offset(span,400,0).perform()# 這里加了個循環(huán),就是滑動不行,一直刷新繼續(xù)滑動,直到成功# 其實這里也只是為了保險起見,因為上面改了滑動框,基本上都會成功while True: try:info=browser.find_element_by_xpath(’//*[@id='J-slide-passcode']/div/span’).textprint(info)if info==’哎呀,出錯了,點擊刷新再來一次’: #點擊刷新 browser.find_element_by_xpath(’//*[@id='J-slide-passcode']/div/span/a’).click() time.sleep(0.2) #重新移動滑塊 span = browser.find_element_by_xpath(’//*[@id='nc_1_n1z']’) action = ActionChains(browser) # 點擊長按指定的標簽 action.click_and_hold(span).perform() action.drag_and_drop_by_offset(span, 400, 0).perform() time.sleep(5) except:print(’ok!’)break# 完成后,松開鼠標action.release() time.sleep(5)# 退出browser.quit()

最后想說的是

實現搶票的事,這個我還暫時沒想好怎么去做

平時工作比較忙

所以以后實現這個功能吧

拜拜~

以上就是python+selenium實現12306模擬登錄的步驟的詳細內容,更多關于python 12306模擬登錄的資料請關注好吧啦網其它相關文章!

標簽: 12306 車票 Python
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久亚洲一区| 亚洲免费激情| 亚洲婷婷在线| 蜜桃视频欧美| 日韩精品1区| 在线看片不卡| 在线观看视频免费一区二区三区| 图片区亚洲欧美小说区| 国产精品成久久久久| 伊人久久高清| 亚洲一区二区三区四区电影| 欧美亚洲二区| 综合国产在线| 国产91精品对白在线播放| 蜜臀国产一区| 日韩午夜黄色| 欧美黄页在线免费观看 | 亚洲男女av一区二区| 中文字幕一区二区av| 91精品在线免费视频| 久久这里只有精品一区二区| 神马久久午夜| 99精品99| 国产日韩欧美在线播放不卡| 久久精品三级| 高清日韩中文字幕| 亚洲欧美久久精品| 美女福利一区二区三区| 日韩一区二区三区在线看| 欧美黄页在线免费观看 | 色爱av综合网| 日韩av不卡一区二区| 午夜久久免费观看| 在线一区电影| 免费看一区二区三区| 亚州欧美在线| 中文日韩在线| 国产精品毛片一区二区在线看| 天海翼精品一区二区三区| 播放一区二区| 国产精品国产三级国产在线观看| 97久久超碰| 亚洲欧洲一区| 欧美精选视频一区二区| 国产99精品| 欧美日韩视频免费看| 精品一区欧美| 国产精品毛片| 97精品久久| 免费成人在线观看| 国产欧美在线| 久久婷婷久久| 亚洲三级av| 久久亚洲精品中文字幕| 999国产精品永久免费视频app| 欧美成人国产| 亚州av日韩av| 日韩欧美四区| 亚洲在线观看| 欧美一级二区| 日本激情一区| 日韩中文在线电影| 99精品一区| 蜜桃91丨九色丨蝌蚪91桃色| 免费观看不卡av| 亚洲欧美日韩国产一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产成人精选| 麻豆国产一区| 久久国产日韩| 丝袜美腿亚洲一区二区图片| 午夜国产一区二区| 亚洲一区二区三区中文字幕在线观看| 久久精品欧美一区| 国产欧美一区二区色老头| 国产精品对白久久久久粗| 国产精品99一区二区三| 欧美中文字幕一区二区| 97久久精品| 欧美va天堂在线| 国产福利资源一区| 日韩视频中文| 国产精品国产一区| 日韩国产在线一| 国产91一区| 精品女同一区二区三区在线观看| 美女日韩在线中文字幕| 亚州av乱码久久精品蜜桃| 亚洲精品影院在线观看| 亚洲一级网站| 国产va在线视频| 欧美永久精品| 亚洲精品小说| 麻豆久久一区| 久久精品91| 国产乱论精品| 亚洲少妇诱惑| 亚洲www啪成人一区二区| 亚洲毛片在线免费| 欧美精品日日操| 久久99青青| 最新日韩欧美| 久久麻豆精品| 久久中文字幕av一区二区不卡| 欧美一区自拍| 国产视频一区二区在线播放| 婷婷综合国产| 欧美日韩国产综合网| 日韩av中文字幕一区二区| 精品国产欧美日韩| 国产精品女主播一区二区三区| 蜜桃成人av| 成人免费电影网址| 国产亚洲毛片| 成人在线免费观看网站| 欧美日韩中文| 婷婷久久免费视频| 一区在线视频观看| 婷婷激情久久| 久久国产成人午夜av影院宅| 麻豆视频在线观看免费网站黄 | 久久精品伊人| 久久亚洲精品中文字幕| 国产激情久久| 欧美一区二区三区久久| 国产福利片在线观看| 久久精品国产999大香线蕉| 国产日韩一区| 麻豆国产精品视频| 久久97久久97精品免视看秋霞| 日韩高清中文字幕一区| 国产欧美日韩一区二区三区在线| 国产欧美日韩精品一区二区三区| 国产日韩免费| 国产日韩欧美三级| 精品国产亚洲日本| 久久婷婷一区| 免费视频亚洲| 中文精品电影| 黑人精品一区| 亚洲综合电影| 欧美激情一区| 欧美日本二区| 青草av.久久免费一区| 国产日韩高清一区二区三区在线 | 日产精品一区| 神马午夜在线视频| 久久精品不卡| 成人av二区| 亚洲制服少妇| 7777精品| 精品五月天堂| 久久中文字幕av一区二区不卡| 视频一区二区中文字幕| 国产成人精选| 四虎在线精品| 国产一区二区视频在线看| 久久三级视频| 91亚洲无吗| 亚洲国产日韩欧美在线| 久久一区欧美| 日韩午夜视频在线| 欧美资源在线| 亚洲www免费| 久久久久97| 国产免费av一区二区三区| 亚洲人成在线影院| 精品一区免费| 日韩欧美中文| 韩日一区二区| www在线观看黄色| 精品一区二区三区免费看| 亚洲人成精品久久久| 首页欧美精品中文字幕| 亚洲高清激情| 国产综合视频| 国产精品丝袜在线播放| 国产麻豆久久| 日韩视频1区| 日本不卡高清| 蜜臀a∨国产成人精品| 日韩国产在线观看| 亚洲激情精品| 日韩精品亚洲aⅴ在线影院| 精品视频高潮| 三级在线观看一区二区| 福利视频一区| 91精品一区二区三区综合| 亚洲精品护士| 欧美aa一级| 欧美三级第一页| 成人av动漫在线观看| 国产亚洲高清一区| 免费看黄色91| 欧美久久精品一级c片| 亚洲国产日韩欧美在线| av不卡在线看| 日韩福利视频一区| 毛片在线网站| 伊人久久国产|