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

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

python - 模擬滑動驗證碼,有源碼,求解

瀏覽:261日期:2022-09-03 17:48:41

問題描述

# -*- coding:utf-8 -*-from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.action_chains import ActionChainsimport PIL.Image as imageimport time,re, randomimport requeststry: from StringIO import StringIOexcept ImportError: from io import StringIO#爬蟲模擬的瀏覽器頭部信息agent = 'Mozilla/5.0 (Windows NT 5.1; rv:33.0) Gecko/20100101 Firefox/33.0'headers = {'User-Agent': agent}# 根據位置對圖片進行合并還原# filename:圖片# location_list:圖片位置#內部兩個圖片處理函數的介紹#crop函數帶的參數為(起始點的橫坐標,起始點的縱坐標,寬度,高度)#paste函數的參數為(需要修改的圖片,粘貼的起始點的橫坐標,粘貼的起始點的縱坐標)def get_merge_image(filename,location_list): #打開圖片文件 im = image.open(filename) #創建新的圖片,大小為260*116 new_im = image.new('RGB', (260,116)) im_list_upper=[] im_list_down=[] # 拷貝圖片 for location in location_list:#上面的圖片if location['y']==-58: im_list_upper.append(im.crop((abs(location['x']),58,abs(location['x'])+10,166)))#下面的圖片if location['y']==0: im_list_down.append(im.crop((abs(location['x']),0,abs(location['x'])+10,58))) new_im = image.new('RGB', (260,116)) x_offset = 0 #黏貼圖片 for im in im_list_upper:new_im.paste(im, (x_offset,0))x_offset += im.size[0] x_offset = 0 for im in im_list_down:new_im.paste(im, (x_offset,58))x_offset += im.size[0] return new_im#下載并還原圖片# driver:webdriver# p:圖片的pdef get_image(driver,p): #找到圖片所在的p background_images=driver.find_elements_by_xpath(p) location_list=[] imageurl='' #圖片是被CSS按照位移的方式打亂的,我們需要找出這些位移,為后續還原做好準備 for background_image in background_images:location={}#在html里面解析出小圖片的url地址,還有長高的數值location['x']=int(re.findall('background-image: url('(.*)'); background-position: (.*)px (.*)px;',background_image.get_attribute('style'))[0][1])location['y']=int(re.findall('background-image: url('(.*)'); background-position: (.*)px (.*)px;',background_image.get_attribute('style'))[0][2])imageurl=re.findall('background-image: url('(.*)'); background-position: (.*)px (.*)px;',background_image.get_attribute('style'))[0][0]location_list.append(location) #替換圖片的后綴,獲得圖片的URL imageurl=imageurl.replace('webp','jpg') #獲得圖片的名字 imageName = imageurl.split('/')[-1] #獲得圖片 session = requests.session() r = session.get(imageurl, headers = headers, verify = False) #下載圖片 with open(imageName, 'wb') as f:f.write(r.content)f.close() #重新合并還原圖片 image=get_merge_image(imageName, location_list) return image#對比RGB值def is_similar(image1,image2,x,y): pass #獲取指定位置的RGB值 pixel1=image1.getpixel((x,y)) pixel2=image2.getpixel((x,y)) for i in range(0,3):# 如果相差超過50則就認為找到了缺口的位置if abs(pixel1[i]-pixel2[i])>=50: return False return True#計算缺口的位置def get_diff_location(image1,image2): i=0 # 兩張原始圖的大小都是相同的260*116 # 那就通過兩個for循環依次對比每個像素點的RGB值 # 如果相差超過50則就認為找到了缺口的位置 for i in range(0,260):for j in range(0,116): if is_similar(image1,image2,i,j)==False:return i#根據缺口的位置模擬x軸移動的軌跡def get_track(length): pass list=[] #間隔通過隨機范圍函數來獲得,每次移動一步或者兩步 x=random.randint(1,3) #生成軌跡并保存到list內 while length-x>=5:list.append(x)length=length-xx=random.randint(1,3) #最后五步都是一步步移動 for i in range(length):list.append(1) return list#滑動驗證碼破解程序def main(): #打開火狐瀏覽器 driver = webdriver.Firefox() #用火狐瀏覽器打開網頁 driver.get('http://www.geetest.com/exp_embed') #等待頁面的上元素刷新出來 WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_slider_knob gt_show']').is_displayed()) WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_cut_bg gt_show']').is_displayed()) WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_cut_fullbg gt_show']').is_displayed()) #下載圖片 image1=get_image(driver, '//p[@class='gt_cut_bg gt_show']/p') image2=get_image(driver, '//p[@class='gt_cut_fullbg gt_show']/p') #計算缺口位置 loc=get_diff_location(image1, image2) #生成x的移動軌跡點 track_list=get_track(loc) #找到滑動的圓球 element=driver.find_element_by_xpath('//p[@class='gt_slider_knob gt_show']') location=element.location #獲得滑動圓球的高度 y=location['y'] #鼠標點擊元素并按住不放 print ('第一步,點擊元素') ActionChains(driver).click_and_hold(on_element=element).perform() time.sleep(0.15) print ('第二步,拖動元素') track_string = '' for track in track_list:#不能移動太快,否則會被認為是程序執行track_string = track_string + '{%d,%d},' % (track, y - 445)#xoffset=track+22:這里的移動位置的值是相對于滑動圓球左上角的相對值,而軌跡變量里的是圓球的中心點,所以要加上圓球長度的一半。#yoffset=y-445:這里也是一樣的。不過要注意的是不同的瀏覽器渲染出來的結果是不一樣的,要保證最終的計算后的值是22,也就是圓球高度的一半ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=track+22, yoffset=y-445).perform()#間隔時間也通過隨機函數來獲得,間隔不能太快,否則會被認為是程序執行time.sleep(random.randint(10,50)/100) print (track_string) #xoffset=21,本質就是向后退一格。這里退了5格是因為圓球的位置和滑動條的左邊緣有5格的距離 ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=21, yoffset=y-445).perform() time.sleep(0.1) ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=21, yoffset=y-445).perform() time.sleep(0.1) ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=21, yoffset=y-445).perform() time.sleep(0.1) ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=21, yoffset=y-445).perform() time.sleep(0.1) ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=21, yoffset=y-445).perform() print ('第三步,釋放鼠標') #釋放鼠標 ActionChains(driver).release(on_element=element).perform() time.sleep(3) #點擊驗證 # submit = driver.find_element_by_xpath('//p[@class='gt_ajax_tip success']') # print(submit.location) # time.sleep(5) #關閉瀏覽器,為了演示方便,暫時注釋掉. #driver.quit()#主函數入口if __name__ == '__main__': pass main()

上面是一段源碼,模擬滑塊驗證的,但是在

#等待頁面的上元素刷新出來 WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_slider_knob gt_show']').is_displayed()) WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_cut_bg gt_show']').is_displayed()) WebDriverWait(driver, 30).until(lambda the_driver: the_driver.find_element_by_xpath('//p[@class='gt_cut_fullbg gt_show']').is_displayed())

這一段是,報無效語法,沒看出來,大神說下。以上源代碼來源于網絡。

問題解答

回答1:

沒有使用ide?

python - 模擬滑動驗證碼,有源碼,求解

編輯器也可以啊!

python - 模擬滑動驗證碼,有源碼,求解

把find_element_by_xpath('//p[@class='gt_slider_knob gt_show']')改成這樣find_element_by_xpath(’//p[@class='gt_slider_knob gt_show']’)

標簽: Python 編程
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频在线观看网站| 日韩国产精品久久久久久亚洲| 你懂的国产精品永久在线| 综合激情婷婷| 日韩在线黄色| 日韩av午夜在线观看| 日韩av电影一区| 国产精品chinese| 国产精品成人3p一区二区三区| 国产亚洲久久| 久久91视频| 欧洲一区二区三区精品| 在线天堂资源www在线污| 国产一区二区三区四区二区| 风间由美中文字幕在线看视频国产欧美| 欧美激情三区| 精品一区不卡| 久久久久99| 亚洲欧美日韩国产一区二区| 久久亚洲风情| 国产精品亚洲一区二区在线观看| 欧美成人aaa| 99成人在线视频| 亚洲精品日本| 精品入口麻豆88视频| 欧美成人基地| 少妇精品久久久一区二区三区| 国产乱码精品| 色天使综合视频| 亚洲一区二区日韩| 激情丁香综合| 婷婷综合成人| 欧美二三四区| 亚洲日产国产精品| 国产精品久久久久久久免费观看| 婷婷综合社区| 麻豆精品在线视频| 91久久黄色| 日韩av自拍| 久久精品超碰| 国产精品免费看| 免费在线观看一区| 日韩精品一级| 国产精品美女久久久| 成人三级高清视频在线看| 久久国产精品久久w女人spa| 久久97久久97精品免视看秋霞| 亚洲一区二区三区四区五区午夜 | 亚洲欧美日韩专区| 亚洲天堂资源| 国产精品亚洲四区在线观看| 亚洲视频二区| 久久av一区| 一区在线免费观看| 一区二区小说| 九九精品调教| 欧美成a人国产精品高清乱码在线观看片在线观看久| 亚洲字幕久久| 亚洲三级毛片| 日韩视频精品在线观看| 香蕉精品久久| 99久久99久久精品国产片果冰| 91亚洲一区| 日韩免费高清| 99精品在线观看| 亚洲少妇诱惑| 麻豆久久精品| 日本在线视频一区二区| 日本午夜精品久久久| 欧美一区久久| 精品在线网站观看| 国产精品久久观看| 免费毛片在线不卡| 日韩中文字幕区一区有砖一区| 国产视频一区欧美| 亚洲精品免费观看| 国产欧美一区二区三区国产幕精品| 欧美视频一区| 98精品视频| 美女国产一区| 国产精久久久| 色综合www| 亚洲一区二区免费在线观看| 国产精品99精品一区二区三区∴| 精品视频91| 亚洲欧美成人综合| 国产精品免费99久久久| 91综合网人人| 亚洲最新av| 里番精品3d一二三区| 国产99精品一区| 日韩精品三级| 欧美综合另类| 免费观看亚洲天堂| 日韩一级网站| 激情久久99| 日韩av不卡在线观看| 中文在线免费视频| 日本视频一区二区| 久久免费国产| 国产精品伦一区二区| 蜜臀91精品国产高清在线观看| 国产欧美日韩精品高清二区综合区 | 婷婷成人在线| 精品国产精品久久一区免费式 | 国产精品亚洲综合在线观看| 亚洲电影在线一区二区三区| 欧美极品中文字幕| 亚洲日本久久| 在线一区视频| 亚洲手机视频| 不卡福利视频| 国产精品毛片久久久| 亚洲少妇诱惑| 激情自拍一区| av中文字幕在线观看第一页| 日本不卡在线视频| 在线一区二区三区视频| 久久精品导航| 精品欧美一区二区三区在线观看| 国产精品久一| 国产精品红桃| 国产精品白丝一区二区三区| 日韩高清中文字幕一区| 亚洲在线网站| 精品一区三区| 欧美日韩少妇| 黄色免费成人| 99成人在线| 日韩在线一二三区| 亚洲青青久久| 欧美日本不卡| 国产一区二区三区精品在线观看| 国产一区二区三区免费在线| 激情不卡一区二区三区视频在线| 国产一区精品福利| 久久久久国产一区二区| 亚洲欧美日韩高清在线| 亚洲精品在线观看91| 99亚洲视频| 日韩av一区二区三区| 美女视频黄 久久| 日韩毛片视频| 亚洲午夜久久久久久尤物| 夜久久久久久| 国产亚洲观看| 亚洲精品国产嫩草在线观看 | 久久精品国产在热久久| 成人欧美一区二区三区的电影| 日韩久久电影| 日韩av在线免费观看不卡| 欧美国产另类| 免费日韩av片| 精品国产乱码久久久| 一本一道久久a久久精品蜜桃| 欧美亚洲综合视频| 欧美激情国产在线| 婷婷综合电影| 日本久久成人网| 日韩av成人高清| 亚洲国产专区校园欧美| 国产美女视频一区二区| 国产在线视频欧美一区| 国产日韩欧美一区在线| 国产视频一区免费看| 国产精品一在线观看| 91精品亚洲| 久久精品99国产精品| 欧美日韩国产免费观看| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 一区二区电影在线观看| 精品福利久久久| 日本午夜精品视频在线观看| 99精品国产一区二区三区| 精品欧美日韩精品| 亚洲a级精品| 久久亚洲精品伦理| 99久久婷婷| а√在线中文在线新版| 国产色99精品9i| 亚洲91网站| 午夜电影一区| 美女精品一区| 999国产精品永久免费视频app| 成人国产精品久久| 老司机精品视频网| 国产精久久久| 欧美激情三区| 精品精品99| 日韩av专区| 久久久夜夜夜| 欧美手机在线| 亚洲精品一区二区在线看| 美女亚洲一区| 99视频精品| 日韩区欧美区| 国产精品极品| 国模精品一区| 国产精品极品在线观看| 国产传媒在线|