示例#1
0
 def __init__(self):
     # 驱动参数
     self.chao_ji_ing = Chaojiying_Client('nap2017', 'qweasdzxc', '909537')  # 用户中心>>软件ID 生成一个替换 96001
     self.options = webdriver.ChromeOptions()
     self.options.add_argument('--user-agent={}'.format(ua_pond))
     self.options.add_argument('window-size=1920x1080')  # 指定浏览器分辨率
     self.options.add_argument('--headless') # 无界面模式
     self.options.add_argument('--disable-gpu') # 隐藏gpu界面
     # self.options.add_argument('--proxy-server=http://{}'.format(ip_port()))  # ip 代理
     self.driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=self.options)
     self.url = 'https://star.game.163.com/xyq/' # 基本参数
示例#2
0
 def __init__(self):
     # 驱动参数
     self.chao_ji_ing = Chaojiying_Client('nap2017', 'qweasdzxc', '909537')  # 用户中心>>软件ID 生成一个替换 96001
     self.options = webdriver.ChromeOptions()
     self.options.add_experimental_option("excludeSwitches", ["enable-automation"])
     self.options.add_experimental_option('useAutomationExtension', False)
     self.options.add_argument('--user-agent={}'.format(ua_pond))
     self.options.add_argument('window-size=1920x1080')  # 指定浏览器分辨率
     self.options.add_argument('--headless') # 无界面模式
     self.options.add_argument('--disable-gpu') # 隐藏gpu界面
     # self.options.add_argument('--proxy-server=http://{}'.format(ip_port()))  # ip 代理
     # self.driver = webdriver.Chrome('C:\\Users\\86138\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver', chrome_options=self.options)
     self.driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=self.options)
     self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                            {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
     # 基本参数
     self.url = 'http://pay.ztgame.com/'
示例#3
0
 def __init__(self, cchoice):
     '''驱动参数'''
     # 用户中心>>软件ID 生成一个替换 96001
     self.chao_ji_ing = Chaojiying_Client('nap2017', 'qweasdzxc', '909537')
     # 实例化
     self.options = webdriver.ChromeOptions()
     # ua池
     self.options.add_argument('--user-agent={}'.format(ua_pond))
     # 指定浏览器分辨率
     self.options.add_argument('window-size=1920x1080')
     # 无界面模式
     self.options.add_argument('--headless')
     # 隐藏gpu界面
     self.options.add_argument('--disable-gpu')
     # ip池
     # self.options.add_argument('--proxy-server=http://{}'.format(ip_port()))  # ip 代理
     # 驱动器
     self.driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=self.options)
     # 基本参数
     # self.url = 'https://charge.xoyo.com/pay?item={}&way=kcard'.format(gh_value(cchoice))
     self.url = 'https://charge.xoyo.com/pay?item={}&way=kcard'.format(cchoice)
import time

from PIL import Image
from selenium import webdriver
from selenium.webdriver import ActionChains

from chaojiying_Python.chaojiying import Chaojiying_Client
from utils import ua_pond, sleep_time, ip_pool
from values import account_number, card_number, card_password, perfect_number, perfect_topup

account_number = account_number() # 账号
card_number = card_number()
card_password = card_password()

# 驱动参数
chao_ji_ing = Chaojiying_Client('nap2017', 'qweasdzxc', '909537') # 用户中心>>软件ID 生成一个替换 96001
options = webdriver.ChromeOptions()
options.add_argument('--user-agent={}'.format(ua_pond))
options.add_argument('window-size=1920x1080') # 指定浏览器分辨率
options.add_argument('--headless') # 无界面模式
options.add_argument('--disable-gpu') # 隐藏gpu界面
# self.options.add_argument('--proxy-server={}'.format(ip_pool))
driver = webdriver.Chrome('C:\\Users\\86138\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver', chrome_options=options)

# 基本参数
url = 'https://pay.wanmei.com/new/proxypay.do?op=prepay&gametype=200013'

# time.sleep(sleep_time())
driver.get(url)  # 打开网页

try:
示例#5
0
    def start_requests(self):
        chrome_options = Options()
        chrome_options.add_argument("--disable-extensions")
        # chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
        chrome_options.add_experimental_option("debuggerAddress",
                                               "127.0.0.1:9222")

        browser = webdriver.Chrome(chrome_options=chrome_options)

        try:
            browser.maximize_window()  # 将窗口最大化防止定位错误
        except:
            pass
        browser.get("https://www.zhihu.com/signin")
        # logo_element = browser.find_element_by_class_name("SignFlowHeader")
        # y_relative_coord = logo_element.location['y']
        #此处一定不要将浏览器放大 会造成高度获取失败!!!
        browser_navigation_panel_height = browser.execute_script(
            'return window.outerHeight - window.innerHeight;')
        time.sleep(5)
        browser.implicitly_wait(5)
        #用来测试验证码,特意输入错误的密码
        #
        # try:
        #     tabs = browser.find_elements_by_css_selector(
        #         ".SignFlow-tabs div")
        #     tabs[1].click()
        # except:
        #     pass
        # browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input").send_keys(Keys.CONTROL + "a")
        # browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input").send_keys(
        #     "17628040175")
        #
        # browser.find_element_by_css_selector(".SignFlow-password input").send_keys(Keys.CONTROL + "a")
        # browser.find_element_by_css_selector(".SignFlow-password input").send_keys(
        #     "2014@ltg1")
        # browser.find_element_by_css_selector(
        #     ".Button.SignFlow-submitButton").click()
        # browser.implicitly_wait(5)

        # 先判断是否登录成功
        login_success = False
        while not login_success:
            try:
                notify_element = browser.find_element_by_class_name(
                    "AppHeader-profile")
                login_success = True

            except:
                pass
            try:
                tabs = browser.find_elements_by_css_selector(
                    ".SignFlow-tabs div")
                tabs[1].click()
            except:
                pass
            try:
                #查询是否有英文验证码
                english_captcha_element = browser.find_element_by_class_name(
                    "Captcha-englishImg")
                base64_text = english_captcha_element.get_attribute("src")
                #'data:image/jpg;base64,null'
                code = base64_text.replace('data:image/jpg;base64,',
                                           '').replace("%0A", "")
                if code == 'null':
                    english_captcha_element = None
            except:
                english_captcha_element = None
            try:
                # 查询是否有中文验证码
                chinese_captcha_element = browser.find_element_by_class_name(
                    "Captcha-chineseImg")
                base64_text = chinese_captcha_element.get_attribute("src")
                #'data:image/jpg;base64,null'
                code = base64_text.replace('data:image/jpg;base64,',
                                           '').replace("%0A", "")
                if code == 'null':
                    chinese_captcha_element = None
            except:
                chinese_captcha_element = None

            if not english_captcha_element and not chinese_captcha_element and not login_success:
                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        "17628040175")
                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys(Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys("2014@ltg")
                browser.find_element_by_css_selector(
                    ".Button.SignFlow-submitButton").click()
                browser.implicitly_wait(5)

            if chinese_captcha_element:
                y_relative_coord = chinese_captcha_element.location['y']
                y_absolute_coord = y_relative_coord + browser_navigation_panel_height
                x_absolute_coord = chinese_captcha_element.location['x']
                # x_absolute_coord = 842
                # y_absolute_coord = 428
                """
                保存图片
                1. 通过保存base64编码
                2. 通过crop方法
                """
                # 1. 通过保存base64编码
                # base64_text = chinese_captcha_element.get_attribute("src")
                # #'data:image/jpg;base64,null'
                # code = base64_text.replace('data:image/jpg;base64,', '').replace("%0A", "")
                # print code
                fh = open("yzm_cn.jpeg", "wb")
                fh.write(base64.b64decode(code))
                fh.close()

                from zheye import zheye
                z = zheye()
                positions = z.Recognize("yzm_cn.jpeg")

                pos_arr = []
                if len(positions) == 2:
                    if positions[0][1] > positions[1][1]:
                        pos_arr.append([positions[1][1], positions[1][0]])
                        pos_arr.append([positions[0][1], positions[0][0]])
                    else:
                        pos_arr.append([positions[0][1], positions[0][0]])
                        pos_arr.append([positions[1][1], positions[1][0]])
                else:
                    pos_arr.append([positions[0][1], positions[0][0]])

                if len(positions) == 2:
                    first_point = [
                        int(pos_arr[0][0] / 2),
                        int(pos_arr[0][1] / 2)
                    ]
                    second_point = [
                        int(pos_arr[1][0] / 2),
                        int(pos_arr[1][1] / 2)
                    ]

                    move((x_absolute_coord + first_point[0]),
                         y_absolute_coord + first_point[1])
                    click()

                    move((x_absolute_coord + second_point[0]),
                         y_absolute_coord + second_point[1])
                    click()

                else:
                    first_point = [
                        int(pos_arr[0][0] / 2),
                        int(pos_arr[0][1] / 2)
                    ]

                    move((x_absolute_coord + first_point[0]),
                         y_absolute_coord + first_point[1])
                    click()

                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        "17628040175")

                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys(Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys("2014@ltg")
                browser.find_element_by_css_selector(
                    ".Button.SignFlow-submitButton").click()

            if english_captcha_element:
                # 2. 通过crop方法
                # from pil import Image
                # image = Image.open(path)
                # image = image.crop((locations["x"], locations["y"], locations["x"] + image_size["width"],
                #                     locations["y"] + image_size["height"]))  # defines crop points
                #
                # rgb_im = image.convert('RGB')
                # rgb_im.save("D:/ImoocProjects/python_scrapy/coding-92/ArticleSpider/tools/image/yzm.jpeg",
                #             'jpeg')  # saves new cropped image
                # # 1. 通过保存base64编码
                # base64_text = english_captcha_element.get_attribute("src")
                # code = base64_text.replace('data:image/jpg;base64,', '').replace("%0A", "")
                # print code
                fh = open("yzm_en.jpeg", "wb")
                fh.write(base64.b64decode(code))
                fh.close()

                # from tools.yundama_requests import YDMHttp
                # yundama = YDMHttp("da_ge_da1", "dageda", 3129, "40d5ad41c047179fc797631e3b9c3025")
                # code = yundama.decode("yzm_en.jpeg", 5000, 60)
                # while True:
                #     if code == "":
                #         code = yundama.decode("yzm_en.jpeg", 5000, 60)
                #     else:
                #         break
                chaojiying = Chaojiying_Client(
                    'yiqieanran01', '1qazxsw23edc',
                    '904611')  # 用户中心>>软件ID 生成一个替换 96001
                im = open('yzm_en.jpeg',
                          'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
                code = chaojiying.PostPic(im, 1902)['pic_str']
                while True:
                    if code == '':
                        code = chaojiying.PostPic(im, 1902)['pic_str']
                    else:
                        break
                browser.find_element_by_xpath(
                    '//*[@id="root"]/div/main/div/div/div/div[1]/div/form/div[4]/div/div/label/input'
                ).send_keys(code)

                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-accountInput.Input-wrapper input").send_keys(
                        "17628040175")
                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys(Keys.CONTROL + "a")
                browser.find_element_by_css_selector(
                    ".SignFlow-password input").send_keys("2014@ltg")
                browser.find_element_by_css_selector(
                    ".Button.SignFlow-submitButton").click()

            browser.implicitly_wait(5)
            try:
                notify_element = browser.find_element_by_class_name(
                    "AppHeader-profile")
                login_success = True

                Cookies = browser.get_cookies()
                print(Cookies)
                cookie_dict = {}
                import pickle
                f = open(
                    'C:\\LTG\\code\\ArticleSpider\\ArticleSpider\\cookies\\zhihu.cookie',
                    'wb')
                pickle.dump(Cookies, f)
                f.close()
                for cookie in Cookies:
                    # 写入文件
                    # 此处大家修改一下自己文件的所在路径
                    # f = open('C:\\LTG\\code\\ArticleSpider\\ArticleSpider\\cookies\\' + cookie['name'] + '.zhihu', 'wb')
                    # pickle.dump(cookie, f)
                    # f.close()
                    cookie_dict[cookie['name']] = cookie['value']
                # browser.close()
                return [
                    scrapy.Request(url=self.start_urls[0],
                                   dont_filter=True,
                                   cookies=cookie_dict)
                ]
            except:
                pass

        print("yes")
示例#6
0
    #  print(x, y, w, h)
    # 计算右下角的坐标
    x1 = x + w
    y1 = y + h
    # 将2个坐标做一个元组,确定要截取的区域
    rangle = (x, y, x1, y1)

    # 实例化Image并打开截取下来的整个页面图片
    img = Image.open('./images/hlg.png')
    # 截取确定好的区域
    code_img = img.crop(rangle)
    # 保存截取的验证码
    code_img.save('./images/code.png')

    # 使用超级鹰识别验证码
    chaojiying = Chaojiying_Client('user', 'password', 'id')
    im = open('./images/code.png', 'rb').read()
    #  print(chaojiying.PostPic(im, 9004))
    result = chaojiying.PostPic(im, 9004)['pic_str']  # 获取返回的坐标值 - 是一个字符串
    #  print(result)
    #  print(type(result))

    # 对返回值进行处理
    if '|' in result:
        cos = list(result.split('|'))  # 将每组坐标放入一个列表cos
    else:
        cos = list(result.split(','))  # 没有|分隔,即只有一组坐标放入列表cos

    # 遍历列表cos并取出其中的每一组坐标,获取其中的横坐标与纵坐标(需要转换为int类型)
    # 接着使用动作链完成点击
    for co in enumerate(cos):
示例#7
0
 def __init__(self):
     self.url = ''
     self.driver = webdriver.Chrome()
     self.wait = WebDriverWait(self.driver,20)
     self.chaojiying = Chaojiying_Client(CHAOJIYING_USERNAME,CHAOJIYING_PASSWORD,CHAOJIYING_SOFT_ID)