コード例 #1
0
ファイル: getCode.py プロジェクト: qxd/zidonghuaceshi
	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
コード例 #2
0
ファイル: crack.py プロジェクト: tkjwd/CrackTouClick
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
    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)
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 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)
コード例 #9
0
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.')
コード例 #10
0
 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)
コード例 #11
0
ファイル: test_12306.py プロジェクト: snowtrain/python_spider
 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)
コード例 #12
0
 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
コード例 #13
0
 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
コード例 #14
0
 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)
コード例 #15
0
 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://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)
コード例 #17
0
ファイル: cookies.py プロジェクト: wxtt522/weibo_verify_code
 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 = "请点击阴影凹槽左上角"
コード例 #18
0
ファイル: crack.py プロジェクト: renxiaoyao798/CommonModule
    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
コード例 #19
0
 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)  # 创建超级鹰对象
コード例 #20
0
 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)
コード例 #21
0
ファイル: crack.py プロジェクト: xuruyi136/py1
 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)
コード例 #22
0
ファイル: b站测试.py プロジェクト: zy610531/python-crawler
 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
コード例 #23
0
ファイル: verific.py プロジェクト: zyq5428/Explorer
    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
コード例 #24
0
class CrackCaptcha():
    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 __del__(self):
        self.browser.close()

    def open(self):
        """
        打开网页输入用户名密码
        :return: None
        """
        self.browser.get(self.url)
        # 填入用户名密码
        username = self.wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, 'input[type="text"]')))
        password = self.wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, 'input[type="password"]')))
        username.send_keys(self.username)
        password.send_keys(self.password)

    def get_captcha_button(self):
        """
        获取初始验证按钮
        :return:
        """
        button = self.wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, 'button[type="button"]')))
        return button

    def get_captcha_element(self):
        """
        获取验证图片对象
        :return: 图片对象
        """
        # 验证码图片加载出来
        self.wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, 'img.geetest_item_img')))
        # 验证码完整节点
        element = self.wait.until(
            EC.presence_of_element_located(
                (By.CLASS_NAME, 'geetest_panel_box')))
        print('成功获取验证码节点')
        return element

    def get_captcha_position(self):
        """
        获取验证码位置
        :return: 验证码位置元组
        """
        element = self.get_captcha_element()
        time.sleep(2)
        location = element.location
        size = element.size
        top, bottom, left, right = location['y'], location['y'] + size[
            'height'], location['x'], location['x'] + size['width']
        return (top, bottom, left, right)

    def get_screenshot(self):
        """
        获取网页截图
        :return: 截图对象
        """
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        screenshot.save('screenshot.png')
        return screenshot

    def get_captcha_image(self, name='captcha.png'):
        """
        获取验证码图片
        :return: 图片对象
        """
        top, bottom, left, right = self.get_captcha_position()
        print('验证码位置', top, bottom, left, right)
        screenshot = self.get_screenshot()
        captcha = screenshot.crop((left, top, right, bottom))
        captcha.save(name)
        return captcha

    def get_points(self, captcha_result):
        """
        解析识别结果
        :param captcha_result: 识别结果
        :return: 转化后的结果
        """
        groups = captcha_result.get('pic_str').split('|')
        locations = [[int(number) for number in group.split(',')]
                     for group in groups]
        return locations

    def touch_click_words(self, locations):
        """
        点击验证图片
        :param locations: 点击位置
        :return: None
        """
        for location in locations:
            ActionChains(self.browser).move_to_element_with_offset(
                self.get_captcha_element(), location[0],
                location[1]).click().perform()
            time.sleep(1)

    def touch_click_verify(self):
        """
        点击验证按钮
        :return: None
        """
        button = self.wait.until(
            EC.element_to_be_clickable((By.CLASS_NAME, 'geetest_commit')))
        button.click()

    def crack(self):
        """
        破解入口
        :return: None
        """
        self.open()
        time.sleep(5)
        # 点击验证按钮
        button = self.get_captcha_button()
        button.click()
        # 获取验证码图片
        image = self.get_captcha_image()
        bytes_array = BytesIO()
        image.save(bytes_array, format='PNG')
        # 识别验证码
        result = self.chaojiying.post_pic(bytes_array.getvalue(),
                                          CHAOJIYING_KIND)
        print(result)
        locations = self.get_points(result)
        self.touch_click_words(locations)
        self.touch_click_verify()
        # 判定是否成功
        success = self.wait.until(
            EC.text_to_be_present_in_element((By.TAG_NAME, 'h2'), '登录成功'))
        time.sleep(5)
        if success:
            print('登录成功!')
コード例 #25
0
class CrackTouClick():
    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 open(self):
        """
        打开网页输入用户名密码
        :return: None
        """
        self.browser.get(self.url)
        email = self.wait.until(
            EC.presence_of_element_located((By.ID, 'ls_username')))
        password = self.wait.until(
            EC.presence_of_element_located((By.ID, 'ls_password')))
        email.send_keys(self.email)
        password.send_keys(self.password)
        button = self.wait.until(
            EC.element_to_be_clickable((By.CLASS_NAME, 'pn'))).click()
        try:

            slider = self.wait.until(
                EC.element_to_be_clickable(
                    (By.CLASS_NAME, 'td-pop-slidetrigger')))
            CHAOJIYING_KIND = 9202
            print('这是滑块验证码')
            image = self.get_touclick_image()
            bytes_array = BytesIO()
            image.save(bytes_array, format='PNG')
            # 识别验证码
            result = self.chaojiying.post_pic(bytes_array.getvalue(),
                                              CHAOJIYING_KIND)
            print('验证码位置', result['pic_str'])
            print(result)
            locations = self.get_points(result)
            self.touch_click_words(locations)
            print('正在检测错误,此处延迟3秒,以便等待页面加载')
            time.sleep(3)
            self.img_error(result)
        except Exception as e:
            print('这是字体验证码', e)
            CHAOJIYING_KIND = 9103
            # 获取验证码图片
            image = self.get_touclick_image()
            bytes_array = BytesIO()
            image.save(bytes_array, format='PNG')

            # 识别验证码
            result = self.chaojiying.post_pic(bytes_array.getvalue(),
                                              CHAOJIYING_KIND)
            print(result)

            locations = self.get_points(result)
            self.touch_click_words2(locations)
            print('正在检测错误,此处延迟3秒,以便等待页面加载')
            time.sleep(3)
            self.img_error(result)

    def touch_click_verify(self):
        """
        获取滑块按钮
        :return: None
        """

        slider = self.wait.until(
            EC.element_to_be_clickable((By.CLASS_NAME, 'td-pop-slidetrigger')))
        return slider

    def get_touclick_element(self):
        """
        获取验证图片对象
        :return: 图片对象
        """
        element = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'td-bg-img')))
        return element

    def get_position(self):
        """
        获取验证码位置
        :return: 验证码位置元组
        """
        element = self.get_touclick_element()
        time.sleep(2)
        location = element.location
        size = element.size
        top, bottom, left, right = location['y'], location['y'] + size[
            'height'], location['x'], location['x'] + size['width']
        return (top, bottom, left, right)

    def get_screenshot(self):
        """
        获取网页截图
        :return: 截图对象
        """
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        return screenshot

    def get_touclick_image(self, name='captcha.png'):
        """
        获取验证码图片
        :return: 图片对象
        """
        top, bottom, left, right = self.get_position()
        screenshot = self.get_screenshot()
        captcha = screenshot.crop((left, top, right, bottom))
        captcha.save(name)
        return captcha

    def get_points(self, captcha_result):
        """
        解析识别结果
        :param captcha_result: 识别结果
        :return: 转化后的结果
        """
        groups = captcha_result.get('pic_str').split('|')
        locations = [[int(number) for number in group.split(',')]
                     for group in groups]
        return locations

    def touch_click_words(self, locations):
        """
        点击滑块验证图片
        :param locations: 点击位置
        :return: None
        """
        for location in locations:
            print(location)
            ActionChains(self.browser).drag_and_drop_by_offset(
                self.touch_click_verify(), location[0], location[1]).perform()
            time.sleep(1)

    def touch_click_words2(self, locations):
        """
        点击字体验证图片
        :param locations: 点击位置
        :return: None
        """
        for location in locations:
            print(location)
            ActionChains(self.browser).move_to_element_with_offset(
                self.get_touclick_element(), location[0],
                location[1]).click().perform()
            time.sleep(1)

    def img_error(self, result):
        #检测验证码有没有出错,这步老是报出栈错误
        #无奈之下只能采取解析式来判断登录前后页面的数据了
        #不得不吐槽的是,这里的滑块验证码坐标识别率低到了令人发指的地步
        test = etree.HTML(self.browser.page_source)
        title = test.xpath('//*[@id="um"]/p[1]/strong/a/@title')
        print('爬取登陆前后的数据变化', title)
        if title == []:
            img_id = result['pic_id']
            self.chaojiying.report_error(img_id)
            print('登录失败,已发送错误验证码')
            self.open()
        else:
            print('登录成功')
class Train():
    """
    模拟登录12306
    """
    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 __del__(self):
        """
        关闭浏览器
        :return: None
        """
        time.sleep(10)
        self.browser.close()

    def open_page(self):
        """
        打开网页,并输入账号密码
        :return:None
        """
        self.browser.get(self.url)
        username = self.wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#username')))
        password = self.wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#password')))
        username.send_keys(self.username)
        time.sleep(0.8)
        password.send_keys(self.password)

    def get_touclick_element(self):
        """
        获取图片对象
        :return: 图片对象
        """
        img = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'touclick-image')))
        return img

    def get_position(self):
        """
        获取验证码图片位置信息
        :return: 验证码位置信息元组
        """
        img = self.get_touclick_element()
        time.sleep(2)
        location = img.location
        size = img.size
        top, bottom, left, right = location['y'], location['y'] + size[
            'height'], location['x'], location['x'] + size['width']
        return (top, bottom, left, right)

    def get_screenshot(self):
        """
        获取网页截图
        :return: 截图
        """
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        return screenshot

    def get_image(self, name='image.png'):
        """
        将验证码图片从网页截图中裁剪出来
        :return:验证码图片
        """
        top, bottom, left, right = self.get_position()
        print('验证码位置', top, bottom, left, right)
        screenshot = self.get_screenshot()
        captcha = screenshot.crop((left, top, right, bottom))
        captcha.save(name)
        return captcha

    def verification_code_recognition(self, image):
        """
        利用超级鹰识别验证码
        :return: 识别结果
        """
        bytes_array = BytesIO()
        image.save(bytes_array, format='PNG')
        result = self.chaojiying.post_pic(bytes_array.getvalue(), 9004)
        return result

    def get_point(self, captcha_result):
        """
        解析识别结果
        :param captcha_result:验证码的识别结果
        :return: 解析后的结果(即正确的位置坐标)
        """
        groups = captcha_result.get('pic_str').split('|')
        locations = [[int(number) for number in group.split(',')]
                     for group in groups]
        return locations

    def click_word(self, locations):
        """
        点击验证图片
        :param locations: 验证码的坐标
        :return: Nome
        """
        for location in locations:
            print(location)
            ActionChains(self.browser).move_to_element_with_offset(
                self.get_touclick_element(), location[0],
                location[1]).click().perform()
            time.sleep(1)

    def login(self):
        """
        登录12306
        :return:None
        """
        login = self.wait.until(
            EC.element_to_be_clickable((By.CLASS_NAME, 'btn200s')))
        login.click()

    def main(self):
        """
        执行
        :return:None
        """
        # 打开网页,输入账号密码
        self.open_page()
        # 获取验证码图片
        image = self.get_image()
        # 识别验证码,其中9004是超级鹰的验证码类型
        result = self.verification_code_recognition(image)
        print(result)
        # 获取验证码坐标信息
        locations = self.get_point(result)
        # 点击验证码
        self.click_word(locations)
        # 点击登录
        time.sleep(1)
        self.login()
コード例 #27
0
ファイル: crack.py プロジェクト: tkjwd/CrackTouClick
class CrackTouClick():
    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 __del__(self):
        self.browser.close()
    
    def open(self):
        """
        打开网页输入用户名密码
        :return: None
        """
        self.browser.get(self.url)
        email = self.wait.until(EC.presence_of_element_located((By.ID, 'email')))
        password = self.wait.until(EC.presence_of_element_located((By.ID, 'password')))
        email.send_keys(self.email)
        password.send_keys(self.password)
    
    def get_touclick_button(self):
        """
        获取初始验证按钮
        :return:
        """
        button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'touclick-hod-wrap')))
        return button
    
    def get_touclick_element(self):
        """
        获取验证图片对象
        :return: 图片对象
        """
        element = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'touclick-pub-content')))
        return element
    
    def get_position(self):
        """
        获取验证码位置
        :return: 验证码位置元组
        """
        element = self.get_touclick_element()
        time.sleep(2)
        location = element.location
        size = element.size
        top, bottom, left, right = location['y'], location['y'] + size['height'], location['x'], location['x'] + size[
            'width']
        return (top, bottom, left, right)
    
    def get_screenshot(self):
        """
        获取网页截图
        :return: 截图对象
        """
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        return screenshot
    
    def get_touclick_image(self, name='captcha.png'):
        """
        获取验证码图片
        :return: 图片对象
        """
        top, bottom, left, right = self.get_position()
        print('验证码位置', top, bottom, left, right)
        screenshot = self.get_screenshot()
        captcha = screenshot.crop((left, top, right, bottom))
        captcha.save(name)
        return captcha
    
    def get_points(self, captcha_result):
        """
        解析识别结果
        :param captcha_result: 识别结果
        :return: 转化后的结果
        """
        groups = captcha_result.get('pic_str').split('|')
        locations = [[int(number) for number in group.split(',')] for group in groups]
        return locations
    
    def touch_click_words(self, locations):
        """
        点击验证图片
        :param locations: 点击位置
        :return: None
        """
        for location in locations:
            print(location)
            ActionChains(self.browser).move_to_element_with_offset(self.get_touclick_element(), location[0],
                                                                   location[1]).click().perform()
            time.sleep(1)
    
    def touch_click_verify(self):
        """
        点击验证按钮
        :return: None
        """
        button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'touclick-pub-submit')))
        button.click()
    
    def login(self):
        """
        登录
        :return: None
        """
        submit = self.wait.until(EC.element_to_be_clickable((By.ID, '_submit')))
        submit.click()
        time.sleep(10)
        print('登录成功')
    
    def crack(self):
        """
        破解入口
        :return: None
        """
        self.open()
        # 点击验证按钮
        button = self.get_touclick_button()
        button.click()
        # 获取验证码图片
        image = self.get_touclick_image()
        bytes_array = BytesIO()
        image.save(bytes_array, format='PNG')
        # 识别验证码
        result = self.chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND)
        print(result)
        locations = self.get_points(result)
        self.touch_click_words(locations)
        self.touch_click_verify()
        # 判定是否成功
        success = self.wait.until(
            EC.text_to_be_present_in_element((By.CLASS_NAME, 'touclick-hod-note'), '验证成功'))
        print(success)
        
        # 失败后重试
        if not success:
            self.crack()
        else:
            self.login()
コード例 #28
0
class CrackTouClick(object):
    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 __del__(self):
            self.browser.close()

    def open(self):
        """
        打开网页输入用户名密码
        :return: None
        """
        # self.params = self.get_redis()
        self.browser.get(self.url)
        search = self.wait.until(EC.presence_of_element_located((By.ID, 'kw')))
        search.send_keys("城市售票网")
        baidu_click = self.wait.until(EC.presence_of_element_located((By.ID, 'su')))
        baidu_click.click()
        spw = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="1"]/h3/a[1]')))
        spw.click()
        self.browser.switch_to.window(self.browser.window_handles[1])
        if self.browser.current_url == "https://busy.urbtix.hk/":
            time.sleep(4)
        if self.browser.current_url == "https://busy.urbtix.hk/redirect.html":
            time.sleep(4)
            try:
                self.browser.find_element_by_xpath('/html/body/div[2]/table/tbody/tr/td/table/tbody/tr[4]/td/a').Click()
            except Exception as E:
                print(E)

    def login(self):
        self.browser.get('https://ticket.urbtix.hk/internet/login/memberLogin')
        while True:
            time.sleep(2)
            try:
                j_username = self.wait.until(EC.presence_of_element_located((By.ID, 'j_username')))
                j_username.clear()
                j_username.send_keys(self.params.get("account"))
                j_password = self.wait.until(EC.presence_of_element_located((By.ID, 'j_password')))
                j_password.clear()
                j_password.send_keys(self.params.get("password"))
                break
            except Exception as E:
                print(E)

    def get_touclick_button(self):
        """
        获取初始验证按钮
        :return:
        """
        button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'touclick-hod-wrap')))
        return button

    def get_touclick_element(self, kind):
        """
        获取验证图片对象
        :return: 图片对象
        """
        if kind == 1:
            self.wait.until(EC.presence_of_element_located((By.ID, 'captchaImage')))
            element = self.browser.find_element_by_xpath('//*[@id="captchaImage"]')
            # element = self.wait.until(EC.presence_of_element_located((By.ID, 'captchaImage')))
        elif kind == 2:
            self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#captcha-image-input-key-container > table > tbody')))
            element = self.browser.find_element_by_xpath('//*[@id="captcha-image-input-key-container"]/table/tbody/tr[1]')
        elif kind == 3:
            self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#captcha-image-input-key-container > table > tbody')))
            element = self.browser.find_element_by_xpath('//*[@id="captcha-image-input-key-container"]/table/tbody/tr[2]')
        return element

    def get_position(self, kind):
        """
        获取验证码位置
        :return: 验证码位置元组
        """
        element = self.get_touclick_element(kind)
        time.sleep(2)
        location = element.location
        size = element.size
        top, bottom, left, right = location['y'], location['y'] + size['height'], location['x'], location['x'] + size[
            'width']
        time.sleep(5)
        # 424,474,703,823
        # 533 583 622 872
        # 583 633 622 872
        return top, bottom, left, right

    def get_screenshot(self):
        """
        获取网页截图
        :return: 截图对象
        """
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        return screenshot

    def get_touclick_image(self, kind=1):
        """
        获取验证码图片
        :return: 图片对象
        """
        name = "captcha{}.png".format(kind)
        top, bottom, left, right = self.get_position(kind)
        print(top, bottom, left, right)
        im = self.get_screenshot()
        self.browser.save_screenshot('full_snap.png')
        if kind == 1 and self.browser_headless:
            self.browser.save_screenshot('full_snap.png')
            image = Image.open('full_snap.png')
            resized_image = image.resize((1920, 1080), Image.ANTIALIAS)
            resized_image.save('full_snap.png')

        im = Image.open('full_snap.png')
        # im = Image.open(name)
        captcha = im.crop((left, top, right, bottom))
        captcha.save(name)
        return captcha

    def get_points(self, captcha_result):
        """
        解析识别结果
        :param captcha_result: 识别结果
        :return: 转化后的结果
        """
        groups = captcha_result.get('pic_str').split('|')
        locations = [[int(number) for number in group.split(',')] for group in groups]
        return locations

    # def touch_click_words(self, locations):
    #     """
    #     点击验证图片
    #     :param locations: 点击位置
    #     :return: None
    #     """
    #     for location in locations:
    #         print(location)
    #         ActionChains(self.browser).move_to_element_with_offset(self.get_touclick_element(), location[0],
    #                                                                location[1]).click().perform()
    #         time.sleep(1)

    def touch_click_verify(self):
        """
        点击验证按钮
        :return: None
        """
        button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'touclick-pub-submit')))
        button.click()

    def login_click(self):
        """
        登录
        :return: None
        """
        self.browser.find_element_by_xpath('//*[@id="login-submit"]/div/div').click()
        time.sleep(2)
        print('login success')

    def get_picture_result(self, kind):
        image = self.get_touclick_image(kind)
        bytes_array = BytesIO()
        image.save(bytes_array, format='PNG')
        # # # 识别验证码
        if kind == 1:
            CHAOJIYING_CODE = CHAOJIYING_KIND
        else:
            CHAOJIYING_CODE = CHAOJIYING_KIND1
        result = self.chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_CODE)
        print(result)
        return result['pic_str']

    def refresh(self):
        self.browser.find_element_by_xpath('//*[@id="loginForm"]/div/div[2]/table/tbody/tr/td[1]/table/tbody/tr[8]/td[2]/img[2]').click()
        time.sleep(2)

    def click_code(self, key_index):
        for index in key_index:
            if index < 5:
                self.browser.find_element_by_xpath('//*[@id="captcha-image-input-key-container"]/table/tbody/tr[1]/td[{}]/img'.format(index + 1)).click()
            else:
                index = index - 5
                self.browser.find_element_by_xpath(
                    '//*[@id="captcha-image-input-key-container"]/table/tbody/tr[2]/td[{}]/img'.format(
                        index + 1)).click()
            time.sleep(0.2)

    def choose_ticker(self):
        try:
            self.browser.find_element_by_xpath('//*[@id="concurrent-login-yes"]/div/div').click()
        except Exception as E:
            print(E)
        while True:
            if self.browser.current_url != self.params.get("key_url"):
                self.browser.get(self.params.get("key_url"))
            try:
                self.browser.find_element_by_xpath('//*[@id="evt-perf-items-tbl"]/tbody/tr[{}]/td[6]/div/img'.format(self.params.get('period'))).click()
                break
            except Exception as E:
                pass

        # self.browser.save_screenshot("choose_ticker.png")

    def choose_ticker_num(self):
        # print("start choose_ticker_num")
        self.wait.until(EC.presence_of_element_located((By.ID, 'ticket-quota-223-sel')))
        html = self.browser.page_source.replace('xmlns="http://www.w3.org/1999/xhtml"', '')
        options = PyQuery(html).find('#ticket-quota-223-sel > option')
        num = PyQuery(options[-1]).val()
        self.browser.find_element_by_xpath('//*[@id="ticket-quota-223-sel"]').send_keys(1)
        # self.browser.find_element_by_xpath('//*[@id="ticket-quota-223-sel"]').send_keys(int(num))
        self.browser.find_element_by_xpath('//*[@id="adjacent-seats-chk"]').click()
        try:
            self.browser.find_element_by_xpath('//*[@id="express-purchase-btn"]/div/span').click()
        except:
            self.browser.find_element_by_xpath('//*[@id="free-seat-purchase-btn"]/div/div/span').click()
        try:
            self.browser.find_element_by_xpath('/html/body/div[9]/div[3]/div/button[1]').click()
        except Exception as E:
        #     self.browser.find_element_by_xpath('//*[@id="reviewTicketForm"]/div[8]/div/div').click()
            print(E)
        print("end choose_ticket_num")
        # self.browser.save_screenshot("choose_ticket_num.png")

    def insert_shopping(self):
        try:
            self.browser.find_element_by_xpath('//*[@id="checkbox-not-adjacent"]').click()
        except Exception as E:
            print(E)
            pass
        try:
            self.browser.find_element_by_xpath('//*[@id="reviewTicketForm"]/div[9]/div/div').click()
        except Exception as E:
            print(E)
            try:
                self.browser.find_element_by_xpath('//*[@id="reviewTicketForm"]/div[8]/div/div').click()
            except Exception as E:
                print(E)
        print("end insert shopping")
        # self.browser.save_screenshot("insert_shopping.png")

    def payment_area(self):
        print("start payment_area")
        time.sleep(1)
        try:
            self.browser.find_element_by_xpath('//*[@id="checkout-btn"]/div/div').click()
        except Exception as E:
            print(E)
            try:
                self.browser.find_element_by_xpath('//*[@id="checkbox-not-adjacent"]').click()
            except Exception as E:
                print(E)

        print("end payment_area")
        # self.browser.save_screenshot("payment_area.png")

    def personal_data(self):
        self.wait.until(EC.presence_of_element_located((By.ID, 'delivery-method-select')))
        self.browser.find_element_by_xpath('//*[@id="input-surname"]').clear()
        self.browser.find_element_by_xpath('//*[@id="input-surname"]').send_keys("cao")
        self.browser.find_element_by_xpath('//*[@id="input-first-name"]').clear()
        self.browser.find_element_by_xpath('//*[@id="input-first-name"]').send_keys('cao')
        self.browser.find_element_by_xpath('//*[@id="input-email"]').clear()
        self.browser.find_element_by_xpath('//*[@id="input-email"]').send_keys(self.params.get('email'))
        self.browser.find_element_by_xpath('//*[@id="delivery-method-select"]').click()
        time.sleep(2)
        self.browser.find_element_by_xpath('//*[@id="delivery_method_group_TDM"]').click()

    def choose_pay_mei(self):
        print("start choose_pay")

        self.browser.find_element_by_xpath('//*[@id="payment-type-select_title"]').click()
        time.sleep(3)
        self.browser.find_element_by_xpath('//*[@id="payment-type-select_child"]/ul/li[4]/img').click()
        time.sleep(0.5)
        self.browser.find_element_by_xpath('//*[@id="input-card-number"]').send_keys(
            self.params.get('input_card_number'))
        time.sleep(0.5)
        self.browser.find_element_by_xpath('//*[@id="input-security-code"]').send_keys(
            self.params.get('input_security_code'))
        time.sleep(0.5)
        self.browser.find_element_by_xpath('//*[@id="payment-expiry-month-select"]').send_keys(
            self.params.get('payment_expiry_month_select'))
        time.sleep(0.5)
        self.browser.find_element_by_xpath('//*[@id="payment-expiry-year-select"]').send_keys(
            self.params.get('payment_expiry_year_select'))
        time.sleep(0.5)
        self.browser.find_element_by_xpath('//*[@id="button-confirm"]/div/div/span').click()
        print("end choose_pay")
        self.browser.save_screenshot("choose_pay.png")

    def confirm_mei(self):
        print("start_confirm_mei")
        self.browser.find_element_by_xpath('//*[@id="checkbox-tnc"]').click()
        self.browser.find_element_by_xpath('//*[@id="button-confirm"]/div/div/span').click()
        print("end confirm_mei")

    def confirm(self):
        print("start confirm")
        self.browser.find_element_by_xpath('//*[@id="checkbox-tnc"]').click()
        self.browser.find_element_by_xpath('//*[@id="button-confirm"]/div/div').click()
        print("end confirm")
        self.browser.save_screenshot("confirm.png")

    def save_ticket(self):
        if self.browser.current_url == "":
            pass
        end = time.time()
        self.browser.save_screenshot("save_ticket{}.png".format(end))

    def login_crack(self):
        """
        破解入口
        :return: None
        """
        self.open()
        self.login()
        while True:
            index = []
            result_str = list()
            result = self.get_picture_result(1)
            for i in result:
                if i.isdigit():
                    result_str.append(i)
                elif i not in result_str:
                    result_str.append(i.lower())
            if len(result_str) != 4:
                self.refresh()
                continue
            str_list = list()
            result = self.get_picture_result(2)
            for i in result:
                if i.isdigit():
                    str_list.append(i)
                elif i.lower() in str_list and i.lower() not in result_str:
                    str_list.append(i.lower())
                else:
                    str_list.append(i.lower())
            if len(str_list) != 5:
                self.refresh()
                continue
            result = self.get_picture_result(3)
            for i in result:
                if i.isdigit():
                    str_list.append(i)
                elif i.lower() in str_list and i.lower() not in result_str:
                    str_list.append(i.lower())
                else:
                    str_list.append(i.lower())
            if len(str_list) != 10:
                self.refresh()
                continue
            result_list = list(result_str)
            for i in result_list:
                if not i.isdigit():
                    for k, v in enumerate(str_list):
                        if i == v:
                            index.append(k)
                else:
                    if int(i) != 0:
                        for k, v in enumerate(str_list):
                            if i == v:
                                index.append(k)
                    else:
                        for k, v in enumerate(str_list):
                            if i == v or i == 'o':
                                index.append(k)
            if len(index) != 4:
                self.refresh()
                continue
            key_index = index
            break

        self.click_code(key_index)
        self.login_click()
        start = time.clock()
        self.choose_ticker()
        self.choose_ticker_num()
        self.insert_shopping()
        print(time.clock() - start)
        self.payment_area()
        print(time.clock() - start)
        self.personal_data()
        self.choose_pay_mei()
        print(time.clock() - start)
        self.confirm_mei()
        time.sleep(120)
コード例 #29
0
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()
コード例 #30
0
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()