def getCode(driver): # 保存浏览器当前页面 driver.save_screenshot("page.png") # 从页面中截取验证码 vcode = driver.find_element_by_xpath("//*[@id='app']/div/div/div/div[3]/form/div[3]/div/div[2]/img") # 1、获取验证码上下左右边界左边 loc = vcode.location print(loc) size = vcode.size print(size) left = loc['x'] * 2 top = loc['y'] * 2 right = (loc['x'] + size['width']) * 2 button = (loc['y'] + size['height']) * 2 # 截取页面中的验证码 page_pic = Image.open('page.png') # 进行截图:参数时一个元组(left,top,right,button) v_code_pic = page_pic.crop((left, top, right, button)) v_code_pic.save('yzm.png') # 利用超级鹰识别验证码中的内容,每次10分 yz = Chaojiying(username='******', password='******', soft_id='901845') with open('yzm.png', 'rb')as f: pic = f.read() # 得到验证码识别的结果 result = yz.post_pic(pic, codetype='1004')['pic_str'] return result
def __init__(self): self.url = 'http://admin.touclick.com/login.html' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.email = EMAIL self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://passport.bilibili.com/login' self.browser = webdriver.Firefox() self.wait = WebDriverWait(self.browser, 20) self.phone = PHONE self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://kyfw.12306.cn/otn/login/init' self.browser = webdriver.Chrome(r"E:\myplugins\chromedriver.exe") self.wait = WebDriverWait(self.browser, 20) self.email = EMAIL self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://kyfw.12306.cn/otn/resources/login.html' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) # self.email = EMAIL # self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://ostec.uestc.edu.cn/authcas/login?service=http://202.115.16.61/eems/Login/doLogin' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.username = USERNAME self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self, username, password): self.url = 'https://passport.weibo.cn/signin/login' self.browser = webdriver.Chrome(chrome_options=chrome_options) self.wait = WebDriverWait(self.browser, 20) self.phone = username self.password = password self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://passport.douyu.com/member/login?' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.email = EMAIL self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://captcha3.scrape.cuiqingcai.com/' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.username = USERNAME self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): self.url = 'https://login.flyme.cn' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.account = ACCOUNT self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def login(): ''' 微博的登陆 :return: ''' driver = webdriver.Chrome() try: driver.maximize_window() # 加载登录页面 url = 'http://www.weibo.com/login.php' driver.get(url) time.sleep(2) print('输入用户名...') elem_user = driver.find_element_by_id("loginname") elem_user.clear() elem_user.send_keys(loginname) time.sleep(2) print('输入密码...') elem_pwd = driver.find_element_by_name("password") elem_pwd.clear() elem_pwd.send_keys(password) time.sleep(3) checkCode = driver.find_element_by_xpath( '//*[@id="pl_login_form"]/div/div[3]/div[3]/div/input') driver.save_screenshot('./images/weibo.png') img = driver.find_element_by_xpath( '//*[@id="pl_login_form"]/div/div[3]/div[3]/a/img') left = img.location['x'] # 验证码图片左上角横坐标 top = img.location['y'] # 验证码图片左上角纵坐标 right = left + img.size['width'] # 验证码图片右下角横坐标 bottom = top + img.size['height'] # 验证码图片右下角纵坐标 im = Image.open('./images/weibo.png') im_crop = im.crop( (left, top, right, bottom)) # 这个im_crop就是从整个页面截图中再截出来的验证码的图片 im_crop.save('./images/zrecaptchar.png') chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) # 识别验证码 bytes_array = BytesIO() im_crop.save(bytes_array, format='PNG') strcode = chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND) print(strcode) print(strcode['pic_str']) checkCode.send_keys(strcode['pic_str']) print('登陆微博...') '//*[@id="pl_login_form"]/div/div[3]/div[6]/a' login_btn = driver.find_element_by_xpath( '//*[@id="pl_login_form"]/div/div[3]/div[6]/a') login_btn.click() print('已经点击') time.sleep(10) print(driver.current_url) driver.quit() except Exception as e: print('login error.')
def __init__(self): self._url = 'https://kyfw.12306.cn/otn/login/init' self._browser = webdriver.Chrome() self._wait = WebDriverWait(self._browser, 20) self._username = USERNAME self._password = PASSWORD self._chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) self._pic_id = None
def __init__(self): self.url = 'https://kyfw.12306.cn/otn/login/init' self.browser = webdriver.Chrome() # self.browser.set_window_size(1920, 1080) self.wait = WebDriverWait(self.browser, 20) self.username = USERNAME self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self, username, passwd): self.url = 'https://passport.bilibili.com/login' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 100) self.BORDER = 31 self.passwd = passwd self.username = username self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self, params): self.url = 'http://www.baidu.com' self.KeyUrl = 'https://ticket.urbtix.hk/internet/zh_TW/eventDetail/38663' self.browser = webdriver.Chrome() # self.browser_headless = True self.wait = WebDriverWait(self.browser, 20) self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) # self.pool = redis.ConnectionPool(host='47.56.66.23', password='******', port=6379, db=0, max_connections=2) # self.red = redis.Redis(connection_pool=self.pool) self.params = params
def __init__(self): """ 初始化 """ self.url = URL self.driver = webdriver.Chrome() # 声明浏览器对象 self.wait = WebDriverWait(self.driver, 5) # 设置显式等待5秒 self.user_phone = USER_PHONENUMBER # 简书账号 self.password = PASSWORD # 密码 self.chaojiying = Chaojiying(CHAIJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAIJIYING_SOFT_ID) # 创建超级鹰对象
def __init__(self): self.url = 'https://fishc.com.cn/forum-173-1.html' self.option = ChromeOptions() self.option.add_experimental_option('excludeSwitches', ['enable-automation']) self.browser = Chrome(options=self.option) self.wait = WebDriverWait(self.browser, 20) self.email = EMAIL self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
def __init__(self): """ 初始化数据 """ self.url = 'https://kyfw.12306.cn/otn/login/init' self.browser = webdriver.Chrome() self.wait = WebDriverWait(self.browser, 20) self.username = '******' self.password = '******' self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOLD_ID)
def __init__(self, username, password, browser): self.url = 'https://passport.weibo.cn/signin/login?entry=mweibo&r=https://m.weibo.cn/' self.browser = browser self.wait = WebDriverWait(self.browser, 20) self.username = username self.password = password self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) self.scale = 1.25 self.kind = CHAOJIYING_KIND_CLICK self.font = ImageFont.truetype("msyh.ttc", 28) self.sliver_text = "请点击阴影凹槽左上角"
def __init__(self, driver, class_name, identifying_name): """ :param driver: 浏览器对象 :param class_name: 图片元素的class属性名称 :param identifying_name: 判断是否登陆成功的验证信息 """ self.browser = driver self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) self.name = class_name self.wait = WebDriverWait(self.browser, 15) self.identifying_name = identifying_name
def __init__(self, code=None): """ 初始化注册信息 :param code: 验证码 """ self.url = URL # 目标站点 self.browser = webdriver.Chrome() # 声明浏览器对象 self.browser.get(self.url) # 访问网页 self.wait = WebDriverWait(self.browser, 5) # 显式等待5秒,待节点元素全部加载 self.username = USERNAME # 用户名 self.password = PASSWORD # 密码 self.email = EMAIL # 邮箱 self.code = code # 图形验证码 self.chaojiying = Chaojiying(CHAIJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAIJIYING_SOFT_ID) # 创建超级鹰对象
def __init__(self): self.url = 'https://captcha3.scrape.center/' self.username = USERNAME self.password = PASSWORD self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) self.options = webdriver.ChromeOptions() # self.options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度 self.options.add_experimental_option( 'excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium self.options.add_experimental_option('useAutomationExtension', False) self.options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en') self.options.add_argument( 'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' ) # self.options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"') self.options.add_argument('--ignore-certificate-errors') self.options.add_argument('--ignore-ssl-errors') # prefs = {"profile.managed_default_content_settings.images": 2, "webrtc.ip_handling_policy": "disable_non_proxied_udp", "webrtc.multiple_routes_enabled": False, "webrtc.nonproxied_udp_enabled": False} prefs = { "webrtc.ip_handling_policy": "disable_non_proxied_udp", "webrtc.multiple_routes_enabled": False, "webrtc.nonproxied_udp_enabled": False } self.options.add_experimental_option("prefs", prefs) # self.options.add_argument('--disable-extensions') # self.options.add_experimental_option('excludeSwitches',['ignore-certificate-errors']) # self.options.add_argument('--start-maximized') self.options.add_argument('disable-blink-features=AutomationControlled' ) #告诉chrome去掉了webdriver痕迹 self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=self.options) self.wait = WebDriverWait(self.browser, 20) #超时时长为10s
def pick_code(self): time.sleep(3) pick_img_label = self.browser.find_element_by_css_selector('img.geetest_item_img') # 获取点触图片标签 src = pick_img_label.get_attribute('src') # 获取点触图片链接 img_content = requests.get(src).content # 获取图片二进制内容 f = BytesIO() f.write(img_content) img0 = Image.open(f) # 将图片以文件的形式打开,主要是为了获取图片的大小 scale = [pick_img_label.size['width'] / img0.size[0], pick_img_label.size['height'] / img0.size[1]] # 获取图片与浏览器该标签大小的比例 cjy = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) result = cjy.post_pic(img_content, '9005') # 发送图片并获取结果 if result['err_no'] == 0: # 对结果进行分析 position = result['pic_str'].split('|') # position = ['110,234','145,247','25,185'] position = [[int(j) for j in i.split(',')] for i in position] # position = [[110,234],[145,247],[25,185]] for items in position: # 模拟点击 ActionChains(self.browser).move_to_element_with_offset(pick_img_label, items[0] * scale[0], items[1] * scale[1]).click().perform() time.sleep(1) time.sleep(2) # 点击登录 certern_btn = self.browser.find_element_by_css_selector('div.geetest_commit_tip') certern_btn.click() return cjy, result
# 构造验证码图片 上下左右的位置 left = loc.get('x') top = loc.get('y') right = loc.get('x') + size.get('width') # 有屏幕缩放比例的 要乘上 buttom = loc.get('y') + size.get('height') # 有屏幕缩放比例的 要乘上 # 验证码位置 val = (left, top, right, buttom) # 打开验证码 page_pic = Image.open('page.png') # 把验证码的位置传进去 code_pic = page_pic.crop(val) # 保存验证码 code_pic.save('code.png') # 2、调用第三方的接口来识别验证码 yz = Chaojiying(username="******", password='******', soft_id="900450") with open('code.png', 'rb') as f: pic = f.read() # 通过对象调用post_pic 方法,进行图片识别是一个地点类型数据,其中的一个pic_str就是一个识别的结果 result = yz.post_pic(pic, codetype='1004') print("识别的结果:", result.get('pic_str')) res = result.get('pic_str') # 在页面上输入验证码 driver.find_element_by_name('imgtxt').send_keys(res) # 点击登录 driver.find_element_by_class_name('login_form_input_submit').click()
checkCode = browser.find_element_by_id('txtOldCheckCode') btnReg = browser.find_element_by_id('ButtonRegister') user.send_keys('*****@*****.**') time.sleep(2) pwd.send_keys('mimamima') time.sleep(2) email.send_keys('*****@*****.**') time.sleep(2) browser.save_screenshot('./images/zhiwang.png') img = browser.find_element_by_id('checkcode') left = img.location['x'] #验证码图片左上角横坐标 top = img.location['y'] #验证码图片左上角纵坐标 right = left + img.size['width'] #验证码图片右下角横坐标 bottom = top + img.size['height'] #验证码图片右下角纵坐标 im = Image.open('./images/zhiwang.png') im_crop = im.crop((left, top, right, bottom)) #这个im_crop就是从整个页面截图中再截出来的验证码的图片 im_crop.save('./images/zrecaptchar.png') chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID) # 识别验证码 bytes_array = BytesIO() im_crop.save(bytes_array, format='PNG') strcode = chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND) print(strcode) checkCode.send_keys(strcode['pic_str']) #模拟点击注册按钮 #btnReg.click()
def crack(): # 保存网页截图 browser.save_screenshot('222.png') # 获取 验证码确定按钮 button = browser.find_element_by_xpath( xpath='//div[@class="geetest_panel"]/a/div') # 获取 验证码图片的 位置信息 img1 = browser.find_element_by_xpath( xpath='//div[@class="geetest_widget"]') location = img1.location size = img1.size top, bottom, left, right = location['y'], location['y'] + size[ 'height'], location['x'], location['x'] + size['width'] print('图片的宽:', img1.size['width']) print(top, bottom, left, right) # 根据获取的验证码位置信息和网页图片 对验证码图片进行裁剪 保存 img_1 = Image.open('222.png') capcha1 = img_1.crop((left, top, right, bottom - 54)) capcha1.save('tu1-1.png') # 接入超级鹰 API 获取图片中的一些参数 (返回的是一个字典) cjy = Chaojiying('zhoufang', '000000', '898324') im = open('tu1-1.png', 'rb').read() content = cjy.PostPic(im, 9004) print(content) # 将图片中汉字的坐标位置 提取出来 positions = content.get('pic_str').split('|') locations = [[int(number) for number in group.split(",")] for group in positions] print(positions) print(locations) # 根据获取的坐标信息 模仿鼠标点击验证码图片 for location1 in locations: print(location1) ActionChains(browser).move_to_element_with_offset( img1, location1[0], location1[1]).click().perform() time.sleep(2) button.click() time.sleep(2) # 失败后重试 lower = browser.find_element_by_xpath( '//div[@class="geetest_table_box"]/div[2]').text print('判断', lower) if '验证成功' in lower: print('登录成功') time.sleep(3) # if lower != '验证失败 请按提示重新操作' and lower != None: # print('登录成功') # time.sleep(3) else: time.sleep(3) print('登录失败') # 登录失败后 , 调用 该函数 , 后台 则对该次判断不做扣分处理 pic_id = content.get('pic_id') print('图片id为:', pic_id) cjy = Chaojiying('zhoufang', '000000', '898324') cjy.ReportError(pic_id) crack()
def __init__(self): self.url = 'https://passport.ctrip.com/user/login?BackUrl=http%3A%2F%2Fwww.ctrip.com%2F#ctm_ref=c_ph_login_buttom' self.driver = webdriver.Chrome() self.wait = WebDriverWait(self.driver, 20) self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
print(loc) size = vcode.size print(size) left = loc['x'] * 2 top = loc['y'] * 2 right = (loc['x'] + size['width']) * 2 button = (loc['y'] + size['height']) * 2 # 截取页面中的验证码 page_pic = Image.open('page.png') # 进行截图:参数时一个元组(left,top,right,button) v_code_pic = page_pic.crop((left, top, right, button)) v_code_pic.save('yzm.png') # 识别验证码中的内容 yz = Chaojiying(username='******', password='******', soft_id='901845') with open('yzm.png', 'rb') as f: pic = f.read() print(pic) # 得到验证码识别的结果 result = yz.post_pic(pic, codetype='1004') print('result===') print(result) res = result['pic_str'] print('res===' + res) # 第四步:输入验证码 driver.find_element_by_xpath( "//*[@id='app']/div/div/div/div[3]/form/div[3]/div/div[1]/input" ).send_keys(res)
from PIL import Image import pytesseract """下载验证码图片""" # 验证码地址 # https://www.renrendai.com/passport/index/captcha?time=1551682134111 # url = "https://www.renrendai.com/passport/index/captcha?time=1551682134111" url = "http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=verify&r=0.8834463023296559" response = requests.get(url).content #将图片写入文件 with open('C:\\Users\\Administrator\\Desktop\\rryz.png', 'wb') as f: f.write(response) # '''识别验证码''' # #第一步:通过内置模块PIL打开文件 # # with open('rryz.png','wb') as f: # pic = Image.open('C:\\Users\\Administrator\\Desktop\\rryz.png') # #第二步:识别图片中的内容 # str1 = pytesseract.image_to_string(pic, lang="chi_sim")# 复杂的验证码,直接识别不了(要进行降噪,,,,处理) # print("验证码识别", str1) #读取文件内容 with open('C:\\Users\\Administrator\\Desktop\\rryz.png', 'rb') as f: pic1 = f.read() #调用第三方打码平台接口识别验证码 from chaojiying import Chaojiying yz = Chaojiying(username='******', password='******', soft_id='904603') res = yz.post_pic(pic1, 1902) print(res['pic_str'])