<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      selenium登錄網銀,密碼控件輸入

      嘗試登錄農行網銀,發現帶控件的密碼輸入框怎么都無法輸入啊

      最后用虛擬鍵盤實現的  , DD模擬鍵盤 http://www.ddxoft.com/

      圖形驗證碼識別沒過,有時間再繼續

      需要安裝  Tesseract-OCR   IEdriver   ,dd下載dll

      # _*_ coding: utf-8 _*_
      import os, sys
      import uuid, time
      import pytesseract
      from selenium import webdriver
      from ctypes import windll
      from PIL import Image
      
      
      def tesseract_file(file_path):
              #my_env = {'TESSDATA_PREFIX': r'C:\Program Files\Tesseract-OCR\testdata'}
              image = Image.open(os.path.realpath(file_path))
              result = pytesseract.image_to_string(image)
              return result
      
      def login_abc(param):
              url = 'https://perbank.abchina.com/EbankSite/startup.do'
              ie_driver = 'C:\Program Files\Internet Explorer\IEDriverServer.exe'
              #os.environ["webdriver.ie.driver"] = ie_driver
              browser = webdriver.Ie(ie_driver)
              browser.maximize_window()
              browser.get(url)
              time.sleep(1)
      
              browser.find_element_by_id('username').send_keys(param['username'])
      
              #載入DD
              libpath = 'libs/DD81200x32.dll' if sys.platform == 'win32' else 'libs/DD81200x64.32.dll'
              dd_dll = windll.LoadLibrary(libpath)
      
              vk = {'5': 205, 'c': 503, 'n': 506, 'z': 501, '3': 203, '1': 201, 'd': 403, '0': 210, 'l': 409, '8': 208,
                    'w': 302,
                    'u': 307, '4': 204, 'e': 303, '[': 311, 'f': 404, 'y': 306, 'x': 502, 'g': 405, 'v': 504, 'r': 304,
                    'i': 308,
                    'a': 401, 'm': 507, 'h': 406, '.': 509, ',': 508, ']': 312, '/': 510, '6': 206, '2': 202, 'b': 505,
                    'k': 408,
                    '7': 207, 'q': 301, "'": 411, '\\': 313, 'j': 407, '`': 200, '9': 209, 'p': 310, 'o': 309, 't': 305,
                    '-': 211,
                    '=': 212, 's': 402, ';': 410}
              #需要組合shift的按鍵。
              vk2 = {'"': "'", '#': '3', ')': '0', '^': '6', '?': '/', '>': '.', '<': ',', '+': '=', '*': '8', '&': '7',
                     '{': '[', '_': '-',
                     '|': '\\', '~': '`', ':': ';', '$': '4', '}': ']', '%': '5', '@': '2', '!': '1', '(': '9'}
      
              def down_up(code):
                  dd_dll.DD_key(vk[code], 1)
                  dd_dll.DD_key(vk[code], 2)
      
              def dd(key):
                  if i.isupper():
                      # 按下抬起 500是shift鍵碼
                      dd_dll.DD_key(500, 1)
                      down_up(i.lower())
                      dd_dll.DD_key(500, 2)
      
                  elif i in '~!@#$%^&*()_+{}|:"<>?':
                      dd_dll.DD_key(500, 1)
                      down_up(vk2[i])
                      dd_dll.DD_key(500, 2)
                  else:
                      down_up(i)
      
              img = browser.find_element_by_id('vCode')
              x, y = img.location['x'] + 50, img.location['y'] + 50
      
              #移動到密碼框點擊激活
              dd_dll.DD_mov(x, y)
              dd_dll.DD_btn(1)
              time.sleep(1)
      
              #依次輸入密碼字符
              for i in param['password']:
                  dd(i)
                  time.sleep(0.2)
      
              left, top = img.location['x'], img.location['y']
              width, height = img.size['width'] + left, img.size['height'] + top
              os.makedirs('imgs')
              oldpath = 'imgs/' + str(uuid.uuid1()) + '.png'
              browser.save_screenshot(oldpath)
              oldpic = Image.open(oldpath)
              newpic = oldpic.crop((left, top, width, height))
              picpath = 'imgs/' + str(uuid.uuid1()) + '.png'
              newpic.save(picpath)
              os.remove(oldpath)
              
              #tesseract可以識別簡單的圖形驗證碼
              vcode = tesseract_file(picpath)
              browser.find_element_by_name('code').send_keys(vcode)
              
              #os.remove(picpath)
              browser.find_element_by_id('logo').click()
      
              time.sleep(1)
              logerr = browser.find_element_by_class_name('logon-error').text
              print(logerr)
      
      if __name__ == '__main__':
          login_abc({'username':'13311111111', 'password':'123456'})

       

      posted @ 2022-02-26 19:38  拷貝達人  閱讀(685)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美人人妻人人澡人人尤物| 在线a亚洲老鸭窝天堂| 国产亚洲精品超碰| 福利视频在线一区二区| 亲子乱aⅴ一区二区三区| 左权县| 无码国内精品久久人妻蜜桃| 国产美女午夜福利视频| 久久精品国产www456c0m| 人妻另类 专区 欧美 制服| 国产亚洲精品自在久久vr| 久久精品国产88精品久久| 精品国内自产拍在线观看| 国产午夜福利视频在线| 综合色天天久久| 成人无码影片精品久久久| 欧美老熟妇又粗又大| 黑人巨大粗物挺进了少妇| 国产精品午夜福利合集| 欧美黑人添添高潮a片www| 丰满无码人妻热妇无码区| 国产av熟女一区二区三区| 鲁丝片一区二区三区免费| 欧美大香线蕉线伊人久久| 欧美一区二区三区性视频| 中文字幕人妻不卡精品| 国产乱子伦精品免费女| 伦理片午夜视频在线观看| 东方四虎在线观看av| 欧美牲交a免费| 国产丰满乱子伦午夜福利| 亚洲熟妇精品一区二区| 久久久精品波多野结衣av| 日本人一区二区在线观看| 亚洲日韩精品无码一区二区三区 | 日本无产久久99精品久久| 色成年激情久久综合国产| 亚洲中文字幕日产无码成人片| 无码人妻一区二区三区线| 女人喷液抽搐高潮视频| 人妻少妇精品中文字幕|