class Premiumgeneratorlink(object): def __init__(self, url): self.url = url self.browser = PhantomJS() def get_link(self): try: self.browser.get('http://premiumgeneratorlink.com/') self.browser.find_element_by_name('link').send_keys(self.url) self.browser.find_element_by_xpath('//a[@class="input"]').click() wdw = WebDriverWait(self.browser, 10) wdw.until(EC.element_to_be_clickable((By.ID, 'check'))).click() wdw.until(EC.element_to_be_clickable((By.ID, 'generate'))).click() link = wdw.until(EC.visibility_of_element_located((By.XPATH, '//form[@class="center"]'))).get_attribute('action') except (WebDriverException, NoSuchElementException, TimeoutException): return False finally: self.browser.quit() return link
def _init_robot(self, id): robot = WDriver() logging.debug("initialize") self.robots.update({str(id): robot}) logging.debug("get facebook.com") robot.get('http://fb.com') logging.debug("login") robot.find_element_by_name('email').send_keys('*****@*****.**') robot.find_element_by_name('pass').send_keys('2855930022040') robot.find_element_by_name('pass').send_keys(Keys.RETURN) for index in range(len(self.remain_ids)): self.lock.acquire() user_id = self.remain_ids.pop() self.lock.release() try: self.get_name_for_id(robot, user_id) except: logging.debug("error while updating record with id=%s" % str(user_id)) self.error_ids.add(user_id) else: self.done_ids.add(user_id) robot.close() return
def get_url_files(retail, invoice_doc_type, invoice_id, invoice_date, invoice_amount): retail_invoice_url = RETAIL_INVOICE_URL[retail] driver = PhantomJS() driver.get(retail_invoice_url) # 1 Set doc_type 'select' try: select_doc_type = Select(driver.find_element_by_name('txtTipoDte')) value = RETAIL_INVOICE_DOC_TYPES[retail][invoice_doc_type]['value'] select_doc_type.select_by_value(value) # name = RETAIL_INVOICE_DOC_TYPES[retail][invoice_doc_type]['name'] # select_doc_type.select_by_visible_text(name) except Exception: print 'ERROR: set doc_type select as Boleta' driver.save_screenshot('screen.png') return '', '' time.sleep(5) # 2 Get recaptcha img url try: recaptcha_img = driver.find_element_by_id('recaptcha_challenge_image') recaptcha_img_url = recaptcha_img.get_attribute('src') except Exception: print 'ERROR: get recaptcha image url' driver.save_screenshot('screen.png') return '', '' # 3 Solve recaptcha v = VisionApi() recaptcha_value = v.detect_text_from_url(recaptcha_img_url) if recaptcha_value is None: print 'ERROR: solving recaptcha image' driver.save_screenshot('screen.png') return '', '' # 4 Fill form script = u""" document.getElementsByName('txtFolio')[0].value = '{invoice_id}'; document.getElementsByName('txtFechaEmision')[0].value = '{invoice_date}'; document.getElementsByName('txtMontoTotal')[0].value = '{invoice_amount}'; document.getElementsByName('recaptcha_response_field')[0].value = '{recaptcha_value}'; """.format( invoice_id=invoice_id, invoice_date=invoice_date, invoice_amount=invoice_amount, recaptcha_value=recaptcha_value, ) driver.execute_script(script) # 5 Submit form try: driver.find_element_by_name('frmDatos').submit() except Exception: print 'ERROR: submitting form' driver.save_screenshot('screen.png') return '', '' # 6 Get url files try: xml_a_tag = driver.find_element_by_xpath( '//*[@id="Tabla_01"]/tbody/tr[1]/td[2]/p/a[2]') pdf_a_tag = driver.find_element_by_xpath( '//*[@id="Tabla_01"]/tbody/tr[1]/td[2]/p/a[1]') xml_url = xml_a_tag.get_attribute('href') pdf_url = pdf_a_tag.get_attribute('href') except Exception: print 'ERROR: getting url files' driver.save_screenshot('screen.png') return '', '' # 8 Delete driver session driver.close() driver.quit() return xml_url, pdf_url
class plugin: def __init__(self): APP_ROOT = os.path.dirname(os.path.abspath(__file__)) print(APP_ROOT) self.req = 0 self.driver = PhantomJS(APP_ROOT + "/phantomjs", service_log_path=os.path.devnull) self.driver.implicitly_wait(3) def restart(self): self.__init__() def frame_search(self, path): framedict = {} for child_frame in self.driver.find_elements_by_tag_name('frame'): child_frame_name = child_frame.get_attribute('name') framedict[child_frame_name] = {'framepath': path, 'children': {}} xpath = '//frame[@name="{}"]'.format(child_frame_name) self.driver.switch_to.frame( self.driver.find_element_by_xpath(xpath)) framedict[child_frame_name]['children'] = self.frame_search( framedict[child_frame_name]['framepath'] + [child_frame_name]) self.driver.switch_to.default_content() if len(framedict[child_frame_name]['framepath']) > 0: for parent in framedict[child_frame_name]['framepath']: parent_xpath = '//frame[@name="{}"]'.format(parent) self.driver.switch_to.frame( self.driver.find_element_by_xpath(parent_xpath)) return framedict def tmon(self): self.driver.get( "https://login.ticketmonster.co.kr/user/loginform?return_url=") self.driver.find_element_by_name('userid').send_keys( config['ACCOUNT']['tmon_id']) self.driver.find_element_by_name('password').send_keys( config['ACCOUNT']['tmon_pw']) self.driver.find_element_by_xpath('//*[@id="loginFrm"]/a[2]').click() self.driver.get( 'http://m.benefit.ticketmonster.co.kr/promotions/page/attendance?view_mode=app' ) self.driver.find_element_by_xpath( '//*[@id="attn_wrap"]/div/div/div[3]/div[2]/div[1]/button').click( ) print(self.driver.find_element_by_class_name('content').text) self.tmon_ret = self.driver.find_element_by_class_name('content').text def ondisk(self): try: self.driver.get("http://ondisk.co.kr/index.php") self.driver.implicitly_wait(3) self.driver.find_element_by_xpath('//*[@id="mb_id"]').send_keys( config['ACCOUNT']['ondisk_id']) self.driver.find_element_by_xpath( '//*[@id="page-login"]/form/div[2]/p[2]/input').send_keys( config['ACCOUNT']['ondisk_pw']) self.driver.find_element_by_xpath( '//*[@id="page-login"]/form/div[2]/p[3]/input').click() self.driver.get( "http://ondisk.co.kr/index.php?mode=eventMarge&sm=event&action=view&idx=746&event_page=1" ) self.driver.switch_to_frame(1) self.driver.execute_script( "window.alert = function(msg){ window.msg = msg; };") self.driver.find_element_by_class_name('button').click() alert_text = self.driver.execute_script("return window.msg;") print(alert_text) except: print("ERR") print(self.driver.page_source) self.ondisk_ret = alert_text def ok_cash_bag(self): today = datetime.datetime.now().strftime("%Y%m%d") sess = requests.session() getdata = sess.get( "https://www.facebook.com/login.php?login_attempt=1&next=https%3A%2F%2Fwww.facebook.com%2Fv2.6%2Fdialog%2Foauth%3Fredirect_uri%3Dhttps%253A%252F%252Fmember.okcashbag.com%252Focb%252FsocialId%252FfacebookProcessor%26scope%3Dpublic_profile%252Cuser_birthday%252Cemail%26client_id%3D645711852239977%26ret%3Dlogin%26logger_id%3D91698e1d-fe1e-b325-4c13-b62636843a9e&lwv=101" ) param = { "lsd": "AVpmy4vJ", "api_key": "645711852239977", "cancel_url": "https://member.okcashbag.com/ocb/socialId/facebookProcessor?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied#_=_", "display": "page", "enable_profile_selector": "", "isprivate": "", "legacy_return": "0", "profile_selector_ids": "", "return_session": "", "skip_api_login": "******", "signed_next": "1", "trynum": "1", "timezone": "-540", "lgndim": "eyJ3IjoxOTIwLCJoIjoxMDgwLCJhdyI6MTkyMCwiYWgiOjEwNDAsImMiOjI0fQ==", "lgnrnd": "173648_UqkK", "lgnjs": "1528418208", "email": config['ACCOUNT']['fb_id'], "pass": config['ACCOUNT']['fb_pw'], "prefill_contact_point": config['ACCOUNT']['fb_id'], "prefill_source": "last_login", "prefill_type": "contact_point", "first_prefill_source": "last_login", "first_prefill_type": "contact_point", "had_cp_prefilled": "true", "had_password_prefilled": "false" } postdata = sess.post( "https://www.facebook.com/login.php?login_attempt=1&next=https%3A%2F%2Fwww.facebook.com%2Fv2.6%2Fdialog%2Foauth%3Fredirect_uri%3Dhttps%253A%252F%252Fmember.okcashbag.com%252Focb%252FsocialId%252FfacebookProcessor%26scope%3Dpublic_profile%252Cuser_birthday%252Cemail%26client_id%3D645711852239977%26ret%3Dlogin%26logger_id%3D91698e1d-fe1e-b325-4c13-b62636843a9e&lwv=101", data=param) # print(postdata.text) postdata = sess.post( "https://member.okcashbag.com//ocb/socialId/socialIdLoginProcess/42100/687474703A2F2F7777772e6f6b636173686261672e636f6d2F696e6465782e646f3F6c6f67696e3D59" ) samlResponse = postdata.text.split("samlResponse.value = \"")[1].split( "\"")[0] # print(samlResponse) param = {"samlResponse": samlResponse, "sst_cd": "", "return_url": ""} postdata = sess.post("http://www.okcashbag.com/index.do?login=Y", data=param) print( postdata.text.split('<span id="profileNickname" class="name">') [1].split("</span>")[0] + "님 로그인") print( postdata.text.split('<span id="spanUsablePoint">')[1].split( '</span>')[0] + "포인트") getdata = sess.get( "http://www.okcashbag.com/life/event/attend/attendMain.do") param = {"method": "", "myUrl": "", "recommUser": "", "today": today} postdata = sess.post( "http://www.okcashbag.com/life/event/attend/attend.do", data=param) print(postdata.text) if len(postdata.text.split('<i class="win-point">')) > 1: print(postdata.text.split('<i class="win-point">')[1] + "포인트 적립") elif len(postdata.text.split("success")) > 1: print("출석체크 완료 ") self.ok_ret = "출석체크 완료" else: print('이미 출석체크 완료') self.ok_ret = "이미 출석체크 완료"
def get_url_files(retail, invoice_doc_type, invoice_id, invoice_date, invoice_amount): retail_invoice_url = RETAIL_INVOICE_URL[retail] driver = PhantomJS() driver.get(retail_invoice_url) # 1 Set doc_type 'select' try: select_doc_type = Select(driver.find_element_by_name('txtTipoDte')) value = RETAIL_INVOICE_DOC_TYPES[retail][invoice_doc_type]['value'] select_doc_type.select_by_value(value) # name = RETAIL_INVOICE_DOC_TYPES[retail][invoice_doc_type]['name'] # select_doc_type.select_by_visible_text(name) except Exception: print 'ERROR: set doc_type select as Boleta' driver.save_screenshot('screen.png') return '', '' time.sleep(5) # 2 Get recaptcha img url try: recaptcha_img = driver.find_element_by_id('recaptcha_challenge_image') recaptcha_img_url = recaptcha_img.get_attribute('src') except Exception: print 'ERROR: get recaptcha image url' driver.save_screenshot('screen.png') return '', '' # 3 Solve recaptcha v = VisionApi() recaptcha_value = v.detect_text_from_url(recaptcha_img_url) if recaptcha_value is None: print 'ERROR: solving recaptcha image' driver.save_screenshot('screen.png') return '', '' # 4 Fill form script = u""" document.getElementsByName('txtFolio')[0].value = '{invoice_id}'; document.getElementsByName('txtFechaEmision')[0].value = '{invoice_date}'; document.getElementsByName('txtMontoTotal')[0].value = '{invoice_amount}'; document.getElementsByName('recaptcha_response_field')[0].value = '{recaptcha_value}'; """.format( invoice_id=invoice_id, invoice_date=invoice_date, invoice_amount=invoice_amount, recaptcha_value=recaptcha_value, ) driver.execute_script(script) # 5 Submit form try: driver.find_element_by_name('frmDatos').submit() except Exception: print 'ERROR: submitting form' driver.save_screenshot('screen.png') return '', '' # 6 Get url files try: xml_a_tag = driver.find_element_by_xpath('//*[@id="Tabla_01"]/tbody/tr[1]/td[2]/p/a[2]') pdf_a_tag = driver.find_element_by_xpath('//*[@id="Tabla_01"]/tbody/tr[1]/td[2]/p/a[1]') xml_url = xml_a_tag.get_attribute('href') pdf_url = pdf_a_tag.get_attribute('href') except Exception: print 'ERROR: getting url files' driver.save_screenshot('screen.png') return '', '' # 8 Delete driver session driver.close() driver.quit() return xml_url, pdf_url
#-*- coding:utf-8 -*- # 添加到Cron,设置每天早上9点执行一次签到 # crontab -e # 添加以下内容 # 0 9 * * * /usr/bin/python /Users/username/cron/sign_v2ex.py from selenium.webdriver import PhantomJS import time import json dr = PhantomJS() url = "https://www.v2ex.com/signin" u = 'username' p = 'password' dr.get(url) account = dr.find_element_by_name('u') account.clear() account.send_keys(u) password = dr.find_element_by_name('p') password.clear() password.send_keys(p) login_btn = dr.find_elements_by_css_selector('.super.normal.button')[1] login_btn.click() mission_daily_url = 'https://www.v2ex.com/mission/daily' dr.get(mission_daily_url) get_daily_award = dr.find_element_by_css_selector('.super.normal.button') get_daily_award.click() balance_url = 'https://www.v2ex.com/balance' dr.get(balance_url) intergal = dr.find_elements_by_css_selector('.positive')[0] yue = dr.find_elements_by_css_selector('.balance_area')[0]