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/' # 基本参数
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/'
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:
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")
# 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):
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)