Esempio n. 1
0
def input_board_text(browser, logger, board_name, cr_bo_success, send_keys=1):
    input_board_XP = '//input[@id="boardEditName"]'
    input_board_flag = explicit_wait(browser, logger, "VOEL",
                                     [input_board_XP, "XPath"], 15, False)
    if input_board_flag:
        time.sleep(3)

        if send_keys == 1:
            browser.find_element_by_xpath(input_board_XP).send_keys(board_name)
            time.sleep(1)

        create_button = browser.find_element_by_xpath(
            "//button/div[contains(text(),'Create')]")
        (ActionChains(browser).move_to_element(
            create_button).click().perform())

        create_error_XP = '//*[starts-with(text(), "Could not save board")]'
        create_error_flag = explicit_wait(browser, logger, "VOEL",
                                          [create_error_XP, "XPath"], 5, False)
        if create_error_flag:
            logger.info('Board already existed!')
            cr_bo_success = 0
    else:
        cr_bo_success = 0

    return cr_bo_success
Esempio n. 2
0
def bind_card_in_normal_process():
    # 绑卡
    # if created_flag == 1 and step_flag == 1:
    #     if login_separately == 1:
    #         login_flag = login_paypal(driver, email, paypal_pwd)
    #         if login_flag == 1:
    #             created_flag = link_card(
    #                 driver, conn, email, card_num, expiration_date, card_csc)
    #             login_separately = 0
    #     else:
    next_step_page_XP = '//div[@class="formLink "]//button'
    next_step_page_flag = explicit_wait(driver, "VOEL",
                                        [next_step_page_XP, "XPath"], 15,
                                        False)
    if next_step_page_flag:
        next_step_page = driver.find_element_by_xpath(next_step_page_XP)
        (ActionChains(driver).move_to_element(
            next_step_page).click().perform())
        step_flag = 1
    else:
        step_flag = 0

    if step_flag == 1:
        input_cardNumber_XP = '//input[@id="cardData_cardNumber"]'
        input_cardNumber_flag = explicit_wait(driver, "VOEL",
                                              [input_cardNumber_XP, "XPath"],
                                              15, False)
        if input_cardNumber_flag:
            driver.find_element_by_xpath(input_cardNumber_XP).send_keys(
                card_num)
            time.sleep(1)
            driver.find_element_by_id('cardData_expiryDate').send_keys(
                expiration_date)
            time.sleep(1)
            driver.find_element_by_id('cardData_csc').send_keys(card_csc)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//div[@class="btnGrp"]/button').click()
            time.sleep(5)
            while True:
                end_flag = ''
                try:
                    end_flag = driver.find_element_by_xpath('//form//h1').text
                    print(end_flag)
                except:
                    pass
                if end_flag == 'Your account’s ready to use! Shop, send money, and more with PayPal':
                    sql = 'UPDATE email_info set created_paypal_account=2 where email=%s'
                    commit_sql(conn, sql, email)
                    time.sleep(1)
                    created_flag = 2
                    print('Successful!')
                    step_flag = 1
                    break
                else:
                    time.sleep(3)
        else:
            step_flag = 0
Esempio n. 3
0
def create_board(browser, logger, conn, homefeed_url, account_id,
                 create_board_num):
    sql = "SELECT home_page FROM account WHERE id=%s"
    result = conn.op_select_one(sql, account_id)
    if result:
        boards_page = result['home_page'] + 'boards'
        sql = "SELECT board_name FROM board_template ORDER BY RAND() LIMIT %s"
        results = conn.op_select_all(sql, create_board_num)
        for board_echo in results:
            cr_bo_success = 1
            board_name = board_echo['board_name']
            logger.info('Boardname', board_name)

            browser.get(boards_page)
            # 个人账号按钮
            display_add_XP = "//body//div[@id='__PWS_ROOT__']//div//div//div[3]//div[2]//div[1]//div[1]//button[1]"
            display_add_flag = explicit_wait(browser, logger, "VOEL",
                                             [display_add_XP, "XPath"], 30,
                                             False)
            if display_add_flag:

                browser.find_element_by_xpath(display_add_XP).click()
                create_button_XP = '//div[@data-test-id="Create board"]'
                create_button_flag = explicit_wait(browser, logger, "VOEL",
                                                   [create_button_XP, "XPath"],
                                                   30, False)

                if create_button_flag:
                    browser.find_element_by_xpath(create_button_XP).click()
                else:
                    cr_bo_success = 0
            else:
                # 商业账号按钮
                try:
                    browser.find_element_by_xpath(
                        "//body/div[@id='__PWS_ROOT__']/div/div/div/div/div/div/div/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"
                    ).click()
                except:
                    cr_bo_success = 0

            if cr_bo_success == 1:
                cr_bo_success = input_board_text(browser, board_name,
                                                 cr_bo_success)
                try:
                    browser.find_element_by_xpath(
                        '//button[@aria-label="Done"]').click()
                    time.sleep(1)
                except:
                    pass

            if cr_bo_success == 1:
                sql = "UPDATE account SET created_boards=created_boards+1 WHERE id=%s"
                conn.op_commit(sql, account_id)

            write_txt_time()

        browser.get(homefeed_url)
Esempio n. 4
0
def login(driver, login_url, account_id, email, pwd, cookie):
    # if cookie:
    #     login_state = cookie_login(driver, login_url, cookie)
    # else:
    #     login_state = 0

    # if login_state == 0:
    driver.get(login_url)
    if driver.page_source.find('This site can’t be reached') > -1:
        login_state = 2
        print('Net error!')
        return login_state
    elif driver.page_source.find("This page isn’t working") > -1:
        login_state = 2
        print('Net error!')
        return login_state
    else:
        input_email_XP = '//input[@id="email"]'
        input_email_flag = explicit_wait(driver, "VOEL",
                                         [input_email_XP, "XPath"], 15, False)
        if input_email_flag:
            driver.find_element_by_xpath(input_email_XP).send_keys(email)
            time.sleep(1)
            driver.find_element_by_name("password").send_keys(pwd)
            time.sleep(1)
            driver.find_element_by_xpath("//form//button").click()
            # login_success_XP = '//div[@class="pinWrapper"]'
            login_success_XP = '//div[text()="Home"]'
            login_success_flag = explicit_wait(driver, "VOEL",
                                               [login_success_XP, "XPath"], 15,
                                               False)
            if login_success_flag:
                login_state = 11
            else:
                reset_passwd_XP = '//button[@aria-label="Reset password"]'
                reset_passwd_flag = explicit_wait(driver, "VOEL",
                                                  [reset_passwd_XP, "XPath"],
                                                  5, False)
                if reset_passwd_flag:
                    print('Error code: 9')
                    login_state = 9
                elif driver.page_source.find(
                        'The email you entered does not belong to any account.'
                ) > -1:
                    print('Error code: 66')
                    login_state = 66
                elif driver.page_source.find(
                        'Your account has been suspended') > -1:
                    print('Error code: 99')
                    login_state = 99
                else:
                    login_state = 0
        else:
            login_state = 0

    return login_state
Esempio n. 5
0
def cookie_login(driver, login_url, cookie):
    driver.get(login_url)
    print('Cookie login...')
    # clear cookies, To prevent the automatic login to other accounts
    driver.delete_all_cookies()
    time.sleep(2)
    try:
        cookies = json.loads(cookie)
        for coo in cookies:
            coo.pop('domain')
            driver.add_cookie(coo)
        driver.refresh()
    except Exception as e:
        print('The cookies is invalid. You are trying to login')
        login_state = 0
        return login_state

    login_success_XP = '//div[@class="pinWrapper"]'
    login_success_flag = explicit_wait(driver, "VOEL",
                                       [login_success_XP, "XPath"], 15, False)
    if login_success_flag:
        login_state = 1
    else:
        login_state = 0

    return login_state
Esempio n. 6
0
def create_board(driver, conn, homefeed_url, account_id, create_board_num):
    sql = "SELECT home_page FROM account WHERE id=%s"
    result = conn.op_select_one(sql, account_id)
    if result:
        home_page = result['home_page'] + 'boards'
        sql = "SELECT board_name FROM board_template ORDER BY RAND() LIMIT %s"
        results = conn.op_select_all(sql, create_board_num)
        for board_echo in results:
            cr_bo_success = 1
            board_name = board_echo['board_name']
            print('Boardname', board_name)

            driver.get(home_page)
            display_add_XP = '//button[@aria-label="Profile actions overflow"]'
            display_add_flag = explicit_wait(driver, "VOEL",
                                             [display_add_XP, "XPath"], 15,
                                             False)
            if display_add_flag:
                driver.find_element_by_xpath(display_add_XP).click()

                create_button_XP = '//div[text()="Create board"]'
                create_button_flag = explicit_wait(driver, "VOEL",
                                                   [create_button_XP, "XPath"],
                                                   15, False)
                if create_button_flag:
                    driver.find_element_by_xpath(create_button_XP).click()
                else:
                    cr_bo_success = 0
            else:
                try:
                    driver.find_element_by_xpath(
                        '//div[@data-test-id="createBoardCard"]').click()
                except:
                    cr_bo_success = 0

            if cr_bo_success == 1:
                cr_bo_success = input_board_text(driver, board_name,
                                                 cr_bo_success)

            if cr_bo_success == 1:
                sql = "UPDATE account SET created_boards=created_boards+1 WHERE id=%s"
                conn.op_commit(sql, account_id)

            write_txt_time()

        driver.get(homefeed_url)
Esempio n. 7
0
def follow(driver, conn, homefeed_url, step_flag, account_id, follow_num):
    print('Turn on the follow function, count:', follow_num)
    sql = 'SELECT COUNT(1) AS all_count FROM follow_history WHERE follow_id=%s'
    follow_count = conn.op_select_one(sql, account_id)['all_count']
    if follow_count < 2:
        sql = 'SELECT * FROM account WHERE home_page IS NOT NULL ORDER BY RAND() LIMIT %s'
        results = conn.op_select_all(sql, follow_num)
        if results:
            for res in results:
                user_id = res['id']
                home_url = res['home_page']
                sql = 'SELECT * FROM follow_history WHERE user_id=%s AND follow_id=%s'
                judge_exist = conn.op_select_one(sql, (user_id, account_id))
                if judge_exist:
                    print('Already followed!')
                else:
                    try:
                        driver.get(home_url)
                    except:
                        pass
                    time.sleep(5)
                    follow_XP = '//div[@class="fixedHeader"]//div[3]//div[2]/button/div'
                    follow_flag = explicit_wait(driver, "VOEL",
                                                [follow_XP, "XPath"], 5, False)
                    if follow_flag:
                        follow_state = driver.find_element_by_xpath(
                            follow_XP).text
                        if follow_state == 'Follow':

                            try:
                                driver.find_element_by_xpath(
                                    '//div[@class="fixedHeader"]//div[3]//div[2]/button'
                                ).click()
                                time.sleep(1)
                            except:
                                pass
                    else:

                        try:
                            follow_state = driver.find_element_by_xpath(
                                '//div[@class="CreatorFollowButton step0"]//div[2]/div'
                            ).text
                            if follow_state == 'Follow':
                                driver.find_element_by_xpath(
                                    '//div[@class="CreatorFollowButton step0"]/div/div/div/div'
                                ).click()
                                time.sleep(1)
                        except:
                            pass
                    sql = 'INSERT INTO follow_history (user_id, follow_id) VALUES (%s, %s)'
                    conn.op_commit(sql, (user_id, account_id))

                write_txt_time()

            driver.get(homefeed_url)

    else:
        print('Do not need follow!')
Esempio n. 8
0
def paypal_personal_page_two():
    input_address_XP = '//div[@data-label-content="Street address"]//input'
    input_address_flag = explicit_wait(driver, "VOEL",
                                       [input_address_XP, "XPath"], 20, False)
    if input_address_flag:
        driver.find_element_by_xpath(input_address_XP).send_keys(address)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_city').send_keys(city)
        time.sleep(1)
        Select(driver.find_element_by_id(
            "paypalAccountData_state")).select_by_value(state)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_zip').send_keys(zip_num)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_phone').send_keys(
            phone_num)
        time.sleep(1)
        driver.find_element_by_xpath(
            '//div[@class="signupCheckBox"]//label').click()
        time.sleep(1)
        driver.find_element_by_xpath('//div[@class="btnGrp"]/button').click()
        time.sleep(5)
        info_error = ''
        try:
            info_error = driver.find_element_by_xpath(
                '//div[@class="notification"]//span').text
        except:
            pass
        if info_error:
            step_flag = 0
            print('Info Error!')
            sql = 'UPDATE email_info set emailIsUsed=9 where email=%s'
            commit_sql(conn, sql, email)
        else:
            step_flag = 1
            sql = 'UPDATE email_info set paypal_pwd=%s, created_paypal_account=1 where email=%s'
            commit_sql(conn, sql, (paypal_pwd, email))
            created_flag = 1
            try_set_up = 0
            while True:
                set_up_profile = ''
                try:
                    set_up_profile = driver.find_element_by_xpath(
                        '//a[@name="notnow"]')
                except:
                    pass
                if set_up_profile:
                    set_up_profile.click()
                    time.sleep(3)
                    break
                else:
                    try_set_up += 1
                    time.sleep(3)
                if try_set_up > 2:
                    break
    else:
        step_flag = 0
Esempio n. 9
0
def activate(driver, email, paypal_pwd, step_flag):
    input_password_XP = '//input[@id="password"]'
    input_password_flag = explicit_wait(driver, "VOEL",
                                        [input_password_XP, "XPath"], 30,
                                        False)
    if input_password_flag:
        time.sleep(8)
        driver.find_element_by_xpath(input_password_XP).send_keys(paypal_pwd)
        time.sleep(1)
        driver.find_element_by_xpath('//button[@id="btnLogin"]').click()
        time.sleep(1)
        not_now_button_XP = '//p[@class="secondaryLink"]/a'
        not_now_button_flag = explicit_wait(driver, "VOEL",
                                            [not_now_button_XP, "XPath"], 10,
                                            False)
        if not_now_button_flag:
            not_now_button = driver.find_element_by_xpath(not_now_button_XP)
            (ActionChains(driver).move_to_element(
                not_now_button).click().perform())
        else:
            try_times = 0
            while True:
                msg_code = ''
                try:
                    msg_code = driver.find_element_by_xpath(
                        '//form/div[1]/p').text
                except:
                    pass
                if msg_code == 'Your email is all set!':
                    # Not now
                    driver.find_element_by_xpath(
                        '//button[@id="/appData/action"]').click()
                    break
                else:
                    try_times += 1
                    time.sleep(3)
                if try_times > 5:
                    step_flag = 0
                    break
    else:
        step_flag = 0

    return step_flag
Esempio n. 10
0
def random_browsing(browser,
                    logger,
                    conn,
                    homefeed_url,
                    account_id,
                    process_flag,
                    save_pic_control,
                    browsing_pic_min,
                    browsing_pic_max,
                    board_name='like'):

    random_browsing_num = random.randint(browsing_pic_min, browsing_pic_max)
    logger.info('Start random browsing:', random_browsing_num, 'time')
    for i in range(random_browsing_num):

        web_pin_arr_XP = '//div[@data-grid-item="true"]'
        web_pin_arr_flag = explicit_wait(browser, logger, "VOEL",
                                         [web_pin_arr_XP, "XPath"], 10, False)
        if web_pin_arr_flag:

            web_pin_arr = browser.find_elements_by_xpath(web_pin_arr_XP)
            click_num = random.randint(1, 8)
            web_pin_num = 1
            for web_pin_one in web_pin_arr:
                if web_pin_num == click_num:
                    time.sleep(3)
                    web_pin_one.click()
                    logger.info('Start the', i + 1, 'browsing')
                    time.sleep(5)

                    try:
                        close_AD_page(browser)
                    except Exception as e:
                        if save_pic_control == 1 and (i + 1) % 2 == 0:
                            save_pic(browser,
                                     conn,
                                     homefeed_url,
                                     account_id,
                                     process_flag,
                                     send_keys=0)

                    win32api.keybd_event(27, 0, 0, 0)
                    win32api.keybd_event(27, 0, win32con.KEYEVENTF_KEYUP, 0)
                    time.sleep(3)

                    win32api.keybd_event(35, 0, 0, 0)
                    win32api.keybd_event(35, 0, win32con.KEYEVENTF_KEYUP, 0)
                    time.sleep(5)
                    break
                else:
                    web_pin_num += 1

                write_txt_time()
        else:
            process_flag = 0
Esempio n. 11
0
def paypal_personal_send_email_again(driver, step_flag):
    print('Send email again!')
    try:
        driver.find_element_by_xpath('//div[@class="myAccount"]/a').click()
        time.sleep(3)
    except:
        pass
    email_flag_XP = '//a[@data-name="confirm_your_email"]'
    email_flag_exist = explicit_wait(driver, "VOEL", [email_flag_XP, "XPath"],
                                     30, False)
    if email_flag_exist:
        email_flag = driver.find_element_by_xpath(email_flag_XP)
        (ActionChains(driver).move_to_element(email_flag).click().perform())

        click_send_button_XP = '//button[@id="js_unconfirmedEmail"]'
        click_send_button_flag = explicit_wait(driver, "VOEL",
                                               [click_send_button_XP, "XPath"],
                                               30, False)
        if click_send_button_flag:
            click_send_button = driver.find_element_by_xpath(
                click_send_button_XP)
            (ActionChains(driver).move_to_element(
                click_send_button).click().perform())
        else:
            driver.refresh()
            click_send_button_XP = '//button[@id="js_unconfirmedEmail"]'
            click_send_button_flag = explicit_wait(
                driver, "VOEL", [click_send_button_XP, "XPath"], 30, False)
            if click_send_button_flag:
                click_send_button = driver.find_element_by_xpath(
                    click_send_button_XP)
                (ActionChains(driver).move_to_element(
                    click_send_button).click().perform())
            else:
                step_flag = 0
        if step_flag == 1:
            time.sleep(10)
            paypal_confirm_url = get_confirm_email(email, email_pwd)
    else:
        step_flag = 0

    return paypal_confirm_url
Esempio n. 12
0
def paypal_here_page_one(driver,
                         step_flag,
                         firstname,
                         lastname,
                         email,
                         paypal_pwd,
                         login_with_input_box=False):
    if login_with_input_box:
        sign_or_log_XP = '//button[@id="pphLoginButton"]'
        step_flag = 2
    else:
        sign_or_log_XP = '//a[text()="Sign Up"]'
    sign_or_log_flag = explicit_wait(driver, "VOEL", [sign_or_log_XP, "XPath"],
                                     15, False)
    if sign_or_log_flag:
        driver.find_element_by_xpath(sign_or_log_XP).click()
        if step_flag == 1:
            input_firstname_XP = '//input[@id="firstName"]'
            input_firstname_flag = explicit_wait(driver, "VOEL",
                                                 [input_firstname_XP, "XPath"],
                                                 15, False)
            if input_firstname_flag:
                driver.find_element_by_xpath(input_firstname_XP).send_keys(
                    firstname)
                time.sleep(1)
                driver.find_element_by_xpath(
                    '//input[@id="lastName"]').send_keys(lastname)
                time.sleep(1)
                driver.find_element_by_xpath('//input[@id="email"]').send_keys(
                    email)
                time.sleep(1)
                driver.find_element_by_xpath(
                    '//input[@id="password"]').send_keys(paypal_pwd)
                time.sleep(1)
                driver.find_element_by_xpath(
                    '//button[@id="continueButton"]').click()
            else:
                step_flag = 0
    else:
        step_flag = 0

    return step_flag
Esempio n. 13
0
def paypal_here_send_email_again(driver, step_flag):
    driver.get('https://www.paypal.com/businessprofile/settings/email')
    email_edit_XP = '//span[@class="links"]//a[1]'
    email_edit_flag = explicit_wait(driver, "VOEL", [email_edit_XP, "XPath"],
                                    10, False)
    if email_edit_flag:
        driver.find_element_by_xpath(email_edit_XP).click()
        email_confirm_XP = '//a[@class="confirm"]'
        email_confirm_flag = explicit_wait(driver, "VOEL",
                                           [email_confirm_XP, "XPath"], 10,
                                           False)
        if email_confirm_flag:
            driver.find_element_by_xpath(email_confirm_XP).click()
            time.sleep(5)
            paypal_confirm_url = get_confirm_email(email, email_pwd)
        step_flag = 0
    else:
        step_flag = 0

    return paypal_confirm_url
Esempio n. 14
0
def input_board_text(driver, board_name, cr_bo_success):
    input_board_XP = '//input[@id="boardEditName"]'
    input_board_flag = explicit_wait(driver, "VOEL", [input_board_XP, "XPath"],
                                     15, False)
    if input_board_flag:
        driver.find_element_by_xpath(input_board_XP).clear()
        time.sleep(1)
        driver.find_element_by_xpath(input_board_XP).send_keys(board_name)
        time.sleep(1)

        create_button = driver.find_element_by_xpath(
            '//form//button[@type="submit"]')
        (ActionChains(driver).move_to_element(create_button).click().perform())

        create_error_XP = '//*[starts-with(text(), "Could not save board")]'
        create_error_flag = explicit_wait(driver, "VOEL",
                                          [create_error_XP, "XPath"], 5, False)
        if create_error_flag:
            print('Board already existed!')
            cr_bo_success = 0
    else:
        cr_bo_success = 0

    return cr_bo_success
Esempio n. 15
0
def login_paypal(driver, email, paypal_pwd):
    input_email_XP = '//input[@id="email"]'
    input_email_flag = explicit_wait(driver, "VOEL", [input_email_XP, "XPath"],
                                     15, False)
    if input_email_flag:
        driver.find_element_by_xpath(input_email_XP).send_keys(email)
        time.sleep(1)
        try:
            driver.find_element_by_id('btnNext').click()
        except:
            pass
        input_password_XP = '//input[@id="password"]'
        explicit_wait(driver, "VOEL", [input_password_XP, "XPath"])
        driver.find_element_by_xpath(input_password_XP).send_keys(paypal_pwd)
        time.sleep(1)
        driver.find_element_by_id('btnLogin').click()
        time.sleep(3)
        try:
            driver.find_element_by_xpath(
                '//p[@class="secondaryLink"]/a').click()
            time.sleep(3)
        except:
            pass

        home_element_XP = '//a[text()="Summary"]'
        home_element_flag = explicit_wait(driver, "VOEL",
                                          [home_element_XP, "XPath"], 10,
                                          False)
        if home_element_flag:
            login_flag = 1
        else:
            login_flag = 0
    else:
        login_flag = 0

    return login_flag
Esempio n. 16
0
def link_card(driver,
              conn,
              email,
              card_num,
              expiration_date,
              card_csc,
              created_flag=1):

    link_button_XP = '//a[@id="bankCardLinkBankOrCard"]'
    explicit_wait(driver, "VOEL", [link_button_XP, "XPath"])
    link_button = driver.find_element_by_xpath(link_button_XP)
    (ActionChains(driver).move_to_element(link_button).click().perform())

    link_card_XP = '//a[@data-name="addCard"]'
    explicit_wait(driver, "VOEL", [link_card_XP, "XPath"])
    link_card = driver.find_element_by_xpath(link_card_XP)
    (ActionChains(driver).move_to_element(link_card).click().perform())

    next_element_XP = '//a[@data-name="linkManually"]'
    explicit_wait(driver, "VOEL", [next_element_XP, "XPath"])
    next_element = driver.find_element_by_xpath(next_element_XP)
    (ActionChains(driver).move_to_element(next_element).click().perform())

    cardNumber_XP = '//input[@id="cardNumber"]'
    explicit_wait(driver, "VOEL", [cardNumber_XP, "XPath"])
    driver.find_element_by_xpath(cardNumber_XP).send_keys(card_num)
    time.sleep(1)
    driver.find_element_by_id('expDate').send_keys(expiration_date)
    time.sleep(1)
    driver.find_element_by_id('verificationCode').send_keys(card_csc)
    time.sleep(1)
    driver.find_element_by_name('detailsSubmit').click()
    time.sleep(5)
    try:
        driver.find_element_by_xpath('//a[@data-name="addCardDone"]').click()
        time.sleep(2)
        sql = 'UPDATE email_info set created_paypal_account=2 where email=%s'
        commit_sql(conn, sql, email)
        time.sleep(1)
        created_flag = 2
        driver.find_element_by_xpath('//a[text()="Summary"]').click()
        time.sleep(3)
    except:
        pass

    return created_flag
Esempio n. 17
0
def paypal_personal_page_one():
    input_firstname_XP = '//input[@id="paypalAccountData_firstName"]'
    input_firstname_flag = explicit_wait(driver, "VOEL",
                                         [input_firstname_XP, "XPath"], 20,
                                         False)
    if input_firstname_flag:
        driver.find_element_by_xpath(input_firstname_XP).send_keys(firstname)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_lastName').send_keys(
            lastname)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_email').send_keys(email)
        time.sleep(1)
        driver.find_element_by_id('paypalAccountData_password').send_keys(
            paypal_pwd)
        time.sleep(2)
        # 确认密码
        try:
            driver.find_element_by_id(
                'paypalAccountData_confirmPassword').send_keys(paypal_pwd)
            time.sleep(1)
        except:
            pass
        try:
            error_code = driver.find_element_by_xpath('//form//p/span').text
            print(error_code)
        except:
            pass
        if error_code == 'It looks like you already signed up. Log in to your account.':
            print('Already signed up')
            sql = 'UPDATE email_info set created_paypal_account=-1 where email=%s'
            commit_sql(conn, sql, email)
            step_flag = 0
        else:
            driver.find_element_by_xpath(
                '//div[@class="btnGrp"]/button').click()
            step_flag = 1
    else:
        step_flag = 0

    return step_flag
Esempio n. 18
0
def save_home_url(driver, conn, account_id):
    home_page_XP = '//div[@aria-label="Saved"]/a'
    # home_page_XP = '//div[@data-test-id="button-container"]//div[3]/div/div[2]//a'
    home_page_flag = explicit_wait(driver, "VOEL", [home_page_XP, "XPath"], 10,
                                   False)
    if home_page_flag:
        home_page = driver.find_element_by_xpath(home_page_XP).get_attribute(
            'href')
    if not home_page:

        try:
            home_page = driver.find_element_by_xpath(
                '//a[@data-test-id="businessName"]').get_attribute('href')
            if home_page:
                home_page = home_page.replace('pins/', '')
        except:

            try:
                home_button = driver.find_element_by_xpath(
                    '//div[@data-test-id="button-container"]/div[3]')
                (ActionChains(driver).move_to_element(
                    home_button).click().perform())
                time.sleep(1)
                home_page = driver.find_element_by_xpath(
                    '//div[@data-test-id="button-container"]/div[3]/div/div[2]//a'
                ).get_attribute('href')
                true_url = 'https://www.pinterest.com/'
                now_url = driver.current_url
                if now_url != true_url:
                    driver.get(true_url)
            except:
                home_page = False

    if home_page:
        sql = 'UPDATE account SET home_page=%s WHERE id=%s'
        conn.op_commit(sql, (home_page, account_id))
Esempio n. 19
0
def confirm_identity(conn, driver, email, confirm_info_id, confirm_user,
                     confirm_pwd, routing_number, account_number,
                     confirm_type):
    next_step = 1
    search_bank_link_text = 0
    accountNumberLast4 = account_number[-4:]
    click_bank_link_XP = '//a[@id="bankCardLinkBankOrCard"]'
    explicit_wait(driver, "VOEL", [click_bank_link_XP, "XPath"])
    click_bank_link = driver.find_element_by_xpath(click_bank_link_XP)
    (ActionChains(driver).move_to_element(click_bank_link).click().perform())

    add_bank_link_XP = '//a[@data-name="addBank"]'
    explicit_wait(driver, "VOEL", [add_bank_link_XP, "XPath"])
    add_bank_link = driver.find_element_by_xpath(add_bank_link_XP)
    (ActionChains(driver).move_to_element(add_bank_link).click().perform())

    click_bank_logo_XP = '//a[@name="manualAddBank"]'
    explicit_wait(driver, "VOEL", [click_bank_logo_XP, "XPath"])
    click_bank_logo = driver.find_element_by_xpath(click_bank_logo_XP)
    (ActionChains(driver).move_to_element(click_bank_logo).click().perform())

    input_routing_XP = '//input[@name="routingNumberGroup"]'
    explicit_wait(driver, "VOEL", [input_routing_XP, "XPath"])
    if confirm_type == 'Savings':
        time.sleep(3)
        # driver.find_element_by_xpath('//label[@for="savingsRadioBtn"]').click()
        driver.find_element_by_xpath('//input[@id="savingsRadioBtn"]').click()
    time.sleep(2)
    driver.find_element_by_xpath(input_routing_XP).send_keys(routing_number)
    time.sleep(1)

    # Account Number
    driver.find_element_by_name('accountNumberInput').send_keys(account_number)
    time.sleep(1)
    add_bank_button_XP = '//button[@name="addBank"]'
    explicit_wait(driver, "VOEL", [add_bank_button_XP, "XPath"])
    add_bank_button = driver.find_element_by_xpath(add_bank_button_XP)
    (ActionChains(driver).move_to_element(add_bank_button).click().perform())
    time.sleep(5)
    try:
        driver.find_element_by_xpath(add_bank_button_XP).click()
    except:
        pass
    security_check = ''
    error_msg = ''
    try:
        security_check = driver.find_element_by_xpath(
            '//div[@class="challengesSection"]//h1').text
    except:
        pass
    time.sleep(2)
    try:
        error_msg = driver.find_element_by_xpath('//form/div[1]/p').text
    except:
        pass
    if security_check == 'Quick security check':
        sql = 'UPDATE email_info set confirm_identity=9 where email=%s'
        commit_sql(conn, sql, email)
        next_step = 0
    elif error_msg:
        try:
            driver.find_element_by_name('addBank').click()
        except:
            pass
    if next_step == 1:
        pending_confirm_button_XP = '//button[@name="pendingConfirmBank"]'
        pending_confirm_button_state = explicit_wait(
            driver, "VOEL", [pending_confirm_button_XP, "XPath"], 10, False)
        if pending_confirm_button_state:
            pending_confirm_button = driver.find_element_by_xpath(
                pending_confirm_button_XP)
            (ActionChains(driver).move_to_element(
                pending_confirm_button).click().perform())

            view_bank_button_XP = '//a[@data-name="viewBank"]'
            explicit_wait(driver, "VOEL", [view_bank_button_XP, "XPath"])
            view_bank_button = driver.find_element_by_xpath(
                view_bank_button_XP)
            (ActionChains(driver).move_to_element(
                view_bank_button).click().perform())

            confirm_instantly_XP = '//a[@name="confirmInstantly"]'
            explicit_wait(driver, "VOEL", [confirm_instantly_XP, "XPath"])
            confirm_instantly = driver.find_element_by_xpath(
                confirm_instantly_XP)
            (ActionChains(driver).move_to_element(
                confirm_instantly).click().perform())
        else:
            user_pwd_confirm_XP = '//div[@class="confirmBank-confirmInstantly"]/a'
            user_pwd_confirm_flag = explicit_wait(
                driver, "VOEL", [user_pwd_confirm_XP, "XPath"], 5, False)
            if user_pwd_confirm_flag:
                user_pwd_confirm = driver.find_element_by_xpath(
                    user_pwd_confirm_XP)
                (ActionChains(driver).move_to_element(
                    user_pwd_confirm).click().perform())

        input_user_XP = '//form/div/div[1]/input'
        input_user_flag = explicit_wait(driver, "VOEL",
                                        [input_user_XP, "XPath"], 30, False)
        if input_user_flag:
            driver.find_element_by_xpath(input_user_XP).send_keys(confirm_user)
            time.sleep(1)
            driver.find_element_by_xpath('//form/div/div[3]/input').send_keys(
                confirm_pwd)
            time.sleep(1)
            driver.find_element_by_name('continue').click()
        else:
            next_step = 0

        if next_step == 1:
            choice_account_number_XP = '//label[@for="accountNumber-%s"]' % accountNumberLast4
            confirm_last_step = explicit_wait(
                driver, "VOEL", [choice_account_number_XP, "XPath"], 150,
                False)
            if confirm_last_step:
                choice_account_number = driver.find_element_by_xpath(
                    choice_account_number_XP)
                (ActionChains(driver).move_to_element(
                    choice_account_number).click().perform())
                time.sleep(1)
                driver.find_element_by_name('continue').click()
                search_bank_link_text = 1
            else:
                try:
                    driver.find_element_by_name('continue').click()
                except:
                    pass
                choice_account_number_XP = '//label[@for="accountNumber-%s"]' % accountNumberLast4
                confirm_last_step = explicit_wait(
                    driver, "VOEL", [choice_account_number_XP, "XPath"], 150,
                    False)
                if confirm_last_step:
                    choice_account_number = driver.find_element_by_xpath(
                        choice_account_number_XP)
                    (ActionChains(driver).move_to_element(
                        choice_account_number).click().perform())
                    time.sleep(1)
                    try:
                        driver.find_element_by_name('continue').click()
                        search_bank_link_text = 1
                    except:
                        pass
        # print(search_bank_link_text)
        if search_bank_link_text == 1:
            confirm_success_XP = '//h2[text()="Bank linked!"]'
            success_flag = explicit_wait(driver, "VOEL",
                                         [confirm_success_XP, "XPath"], 20,
                                         False)
            if success_flag:
                sql = 'UPDATE email_info set confirm_identity=1, confirm_type=%s, confirmAccountNumber=%s where email=%s'
                commit_sql(conn, sql, (confirm_type, account_number, email))
                print('Confirm Successsful!')
                sql = 'UPDATE paypal_confirm_info set used=2 where id=%s'
                commit_sql(conn, sql, confirm_info_id)
Esempio n. 20
0
def paypal_here_page_two(driver, name, address, city, full_state, zip_num,
                         birthdate, phone_num, ssn):
    choice_individual_XP = '//form//div[@id="businessType"]/div'
    choice_individual_flag = explicit_wait(driver, "VOEL",
                                           [choice_individual_XP, "XPath"], 10,
                                           False)
    if choice_individual_flag:
        choice_individual = driver.find_element_by_xpath(choice_individual_XP)
        (ActionChains(driver).move_to_element(
            choice_individual).click().perform())
        time.sleep(2)
        win32api.keybd_event(40, 0, 0, 0)
        win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)
        win32api.keybd_event(13, 0, 0, 0)
        win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)
        input_business_name_XP = '//input[@id="businessLegalName"]'
        input_business_name_flag = explicit_wait(
            driver, "VOEL", [input_business_name_XP, "XPath"], 5, False)
        if input_business_name_flag:
            driver.find_element_by_xpath(input_business_name_XP).send_keys(
                name)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//input[@id="merchantCategoryCode"]').send_keys("women")
            win32api.keybd_event(40, 0, 0, 0)
            win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
            time.sleep(1)
            win32api.keybd_event(13, 0, 0, 0)
            win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
            time.sleep(1)
            # driver.find_element_by_xpath(
            #     '//form//div[@id="businessAverageMonthlyVolume"]').click()
            # time.sleep(1)
            # driver.find_element_by_xpath(
            #     '//ul[@id="businessAverageMonthlyVolume-menu"]//li[text()="Up to USD $4,999"]').click()
            # time.sleep(1)
            driver.find_element_by_xpath(
                '//input[@label="Street address"]').send_keys(address)
            time.sleep(1)
            driver.find_element_by_xpath('//input[@label="City"]').send_keys(
                city)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//*[@id="homeAddress"]/div[4]/div').click()
            time.sleep(1)
            driver.find_element_by_xpath('//li[text()="%s"]' %
                                         full_state).click()
            time.sleep(1)
            driver.find_element_by_xpath(
                '//input[@label="ZIP code"]').send_keys(zip_num)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//input[@id="dateOfBirth"]').send_keys(birthdate)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//input[@id="mobilePhoneNumber"]').send_keys(phone_num)
            time.sleep(1)
            driver.find_element_by_xpath('//input[@id="ssn"]').send_keys(ssn)
            time.sleep(1)
            driver.find_element_by_xpath(
                '//label[input[@id="agreementAccepted"]]').click()
            time.sleep(1)
            driver.find_element_by_xpath(
                '//button[@id="newUserSubmitButton"]').click()
            here_success_text_XP = '''//p[text()="You're ready to go."]'''
            here_success_text_flag = explicit_wait(
                driver, "VOEL", [here_success_text_XP, "XPath"], 8, False)
            if here_success_text_flag:
                here_success = 1
            else:
                here_false_XP = '//a[text()="Summary"]'
                here_false_flag = explicit_wait(driver, "VOEL",
                                                [here_false_XP, "XPath"], 3,
                                                False)
                if here_false_flag:
                    here_success = 0
        else:
            here_success = -1
    else:
        here_success = -1

    return here_success
Esempio n. 21
0
def click_our_pin(driver, conn, homefeed_url, step_flag, current_time,
                  scroll_num, pin_self_count, search_words_count, account_id):
    print('Start searching for our images')
    sql = "SELECT count(-1) AS allnum FROM pin_history WHERE account_id=%s AND add_time>=%s"
    pin_count = conn.op_select_one(sql, (account_id, current_time))['allnum']
    if pin_count < int(pin_self_count):
        sql = "SELECT web_url FROM follow_url"
        results = conn.op_select_all(sql)
        http_in_sql_list = []
        for res in results:
            http_in_sql = res['web_url']
            http_in_sql_list.append(http_in_sql)
        sql = "SELECT * FROM search_words WHERE word_type=100 ORDER BY RAND() LIMIT %s"
        key_wrods = conn.op_select_all(sql, search_words_count)
        if key_wrods:
            driver.get(homefeed_url)
            time.sleep(5)
            for key_wrod in key_wrods:
                search_key_words = key_wrod['word']
                board_name = key_wrod['boards']

                input_search_XP = '//input[@name="q"]'
                input_search_flag = explicit_wait(driver, "VOEL",
                                                  [input_search_XP, "XPath"],
                                                  5, False)
                if not input_search_flag:
                    input_search_XP = '//input[@name="searchBoxInput"]'

                # try:
                #     driver.find_element_by_xpath('//button[@aria-label="Remove search input"]').click()
                # except:
                #     pass

                time.sleep(1)
                driver.find_element_by_xpath(input_search_XP).click()
                time.sleep(1)

                # ctrl + a
                win32api.keybd_event(17, 0, 0, 0)
                win32api.keybd_event(65, 0, 0, 0)
                win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
                win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
                time.sleep(1)

                # Backspace
                win32api.keybd_event(8, 0, 0, 0)
                win32api.keybd_event(8, 0, win32con.KEYEVENTF_KEYUP, 0)
                time.sleep(1)

                driver.find_element_by_xpath(input_search_XP).send_keys(
                    search_key_words)
                time.sleep(3)

                win32api.keybd_event(13, 0, 0, 0)
                win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

                for _ in range(scroll_num):
                    web_pin_arr_XP = '//div[@data-grid-item="true"]'
                    web_pin_arr_flag = explicit_wait(driver, "VOEL",
                                                     [web_pin_arr_XP, "XPath"],
                                                     10, False)
                    if web_pin_arr_flag:
                        web_pin_arr = driver.find_elements_by_xpath(
                            web_pin_arr_XP)
                        for web_pin_one in web_pin_arr:
                            try:
                                ActionChains(driver).move_to_element(
                                    web_pin_one).perform()
                                time.sleep(3)
                                write_txt_time()
                            except:
                                pass
                            try:
                                web_pin_XP = '//a[@rel="nofollow"]//div[2]/div'
                                web_pin_flag = explicit_wait(
                                    driver, "VOEL", [web_pin_XP, "XPath"], 3,
                                    False)
                                if web_pin_flag:
                                    web_pin_url = driver.find_element_by_xpath(
                                        web_pin_XP).text
                                    if web_pin_url in http_in_sql_list:
                                        time.sleep(1)
                                        pin_pic_url = web_pin_one.find_element_by_xpath(
                                            './/div[@class="pinWrapper"]//img'
                                        ).get_attribute('src')
                                        save_pic(driver, conn, homefeed_url,
                                                 account_id, step_flag,
                                                 board_name, 1, pin_pic_url)
                                        sql = "SELECT count(-1) AS allnum FROM pin_history WHERE account_id=%s AND add_time>=%s"
                                        pin_count = conn.op_select_one(
                                            sql, (account_id,
                                                  current_time))['allnum']
                            except:
                                pass

                            if pin_count >= int(pin_self_count):
                                break

                            write_txt_time()

                    if pin_count >= int(pin_self_count):
                        break
                    else:
                        win32api.keybd_event(35, 0, 0, 0)
                        win32api.keybd_event(35, 0, win32con.KEYEVENTF_KEYUP,
                                             0)
                        time.sleep(5)

                if pin_count >= int(pin_self_count):
                    break

                write_txt_time()

    else:
        print('Saved enough!')
Esempio n. 22
0
def upload_pic(browser, logger, conn, process_flag, current_time, account_id,
               username, upload_web, upload_pic_min, upload_pic_max):
    all_upload_num = random.randint(upload_pic_min, upload_pic_max)
    logger.info('Start uploading %s images...' % all_upload_num)
    upload_web_split = upload_web.split('.')
    upload_web_replace = upload_web_split[-2] + '.' + upload_web_split[-1]
    save_error = 0

    while True:
        table_name = None
        upload_flag = 1
        replace_domain = 0
        save_time = (datetime.datetime.utcnow() +
                     datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")

        sql = 'SELECT * FROM upload_url where url=%s'
        result_1 = conn.op_select_one(sql, upload_web)
        if result_1:
            data_type = result_1['data_type']

            sql = 'SELECT * FROM database_relation WHERE data_type=%s'
            result_2 = conn.op_select_one(sql, data_type)
            if result_2:
                table_name = result_2['table_name']

        if table_name:

            sql = "SELECT COUNT(-1) AS allnum FROM %s WHERE id_of_saved='%s' AND save_time>='%s'" % (
                table_name, account_id, current_time)
            upload_num = conn.op_select_one(sql)['allnum']

            if upload_num < all_upload_num:
                random_time = random.randint(10, 30)
                time.sleep(random_time)

                if upload_web == 'original':
                    sql = 'SELECT * FROM pin_upload WHERE saved=0 and data_type=%s ORDER BY RAND() LIMIT 1'
                    result = conn.op_select_one(sql, upload_web)

                elif data_type == 'binding.domain.zhishuai.online':
                    sql = 'SELECT * FROM %s WHERE saved=0 and belong_web="%s" ORDER BY RAND() LIMIT 1' % (
                        table_name, upload_web)
                    result = conn.op_select_one(sql)

                else:
                    replace_domain = 1

                    sql = 'SELECT * FROM %s WHERE saved=0 and data_type="%s" ORDER BY RAND() LIMIT 1' % (
                        table_name, data_type)
                    result = conn.op_select_one(sql)

                if result:

                    upload_pic_path = result['savelink']
                    if replace_domain == 1:
                        upload_pic_path = upload_pic_path.replace(
                            'xxx.com', upload_web_replace)
                    upload_pic_board = result['saveboard']
                    upload_pic_id = result['id']
                    browser.get(upload_pic_path)

                    select_board_XP = "//div//h3[text()='%s']/../../../.." % upload_pic_board
                    select_board_XP_flag = explicit_wait(
                        browser, logger, "VOEL", [select_board_XP, "XPath"],
                        10, False)

                    if select_board_XP_flag:
                        select_board = browser.find_elements_by_xpath(
                            select_board_XP)[-1]
                        browser.execute_script(
                            "arguments[0].scrollIntoView();", select_board)
                        for _ in range(2):
                            win32api.keybd_event(38, 0, 0, 0)
                            win32api.keybd_event(38, 0,
                                                 win32con.KEYEVENTF_KEYUP, 0)

                        time.sleep(3)

                        try:
                            (ActionChains(browser).move_to_element(
                                select_board).click().perform())
                        except:
                            pass

                    else:
                        create_board_XP = "//a[contains(@href,'/board/create/')]"
                        create_board_XP_flag = explicit_wait(
                            browser, logger, "VOEL",
                            [create_board_XP, "XPath"], 5, False)

                        if create_board_XP_flag:

                            create_board = browser.find_element_by_xpath(
                                create_board_XP)
                            try:
                                (ActionChains(browser).move_to_element(
                                    create_board).click().perform())
                            except:
                                pass

                            input_board_name_XP = '//input[@id="boardNameInput"]'
                            input_board_name_flag = explicit_wait(
                                browser, logger, "VOEL",
                                [input_board_name_XP, "XPath"], 10, False)
                            if input_board_name_flag:
                                time.sleep(2)
                                browser.find_element_by_xpath(
                                    input_board_name_XP).send_keys(
                                        upload_pic_board)

                                create_button = browser.find_element_by_xpath(
                                    "//div[text()='Create']/..")
                                (ActionChains(browser).move_to_element(
                                    create_button).click().perform())

                        else:
                            logger.info('Image save failed, Element not found')
                            upload_flag = 0

                    if upload_flag == 1:
                        time.sleep(5)
                        current_url = get_current_url(browser)

                        # upload_pic_board_replace = upload_pic_board.lower().replace('amp;', '').replace(',', '').replace('&', '').split(' ')
                        # url_board_name = ''
                        # for i in upload_pic_board_replace:
                        #     if i:
                        #         if url_board_name:
                        #             url_board_name = url_board_name + '-' + i
                        #         else:
                        #             url_board_name = url_board_name + i

                        if username.lower() in current_url.lower():
                            logger.info(
                                'Image {} upload done!'.format(upload_pic_id))
                            write_txt_time()

                            sql = "UPDATE %s SET saved=1, id_of_saved='%s', save_time='%s' WHERE id='%s'" % (
                                table_name, account_id, save_time,
                                upload_pic_id)
                            conn.op_commit(sql)

                        else:
                            save_error += 1
                            if save_error > 3:
                                sql = "UPDATE account SET upload_done=4 WHERE id=%s"
                                conn.op_commit(sql, account_id)

                                break

                else:
                    sql = "UPDATE account SET upload_done=9 WHERE id=%s"
                    conn.op_commit(sql, account_id)
                    logger.info('There is no data on this domain!')
                    write_txt_time()
                    break

            else:
                logger.info('Enough pictures have been uploaded for today!')
                write_txt_time()
                break
    time.sleep(2)
Esempio n. 23
0
def follow(browser, logger, conn, homefeed_url, account_id, follow_num,
           current_time):
    sql = 'SELECT * FROM main_promotion_account WHERE account_id=%s'
    is_exist = conn.op_select_one(sql, account_id)
    if not is_exist:
        sql = 'SELECT COUNT(1) AS all_count FROM follow_history WHERE follow_id=%s AND followed_time=%s'
        follow_count = conn.op_select_one(
            sql, (account_id, current_time))['all_count']
        if follow_count < follow_num:
            sql = 'SELECT user_id, follow_id FROM follow_history WHERE follow_id=%s AND user_id IN (SELECT account_id FROM main_promotion_account)'
            results1 = conn.op_select_all(sql, account_id)
            user_in_history_lst = []
            if results1:

                for r1 in results1:
                    user_id = r1['user_id']
                    user_in_history_lst.append(user_id)

            sql = 'SELECT account_id FROM main_promotion_account WHERE status=1'
            results2 = conn.op_select_all(sql)
            if results2:
                main_promotion_account_lst = []

                for r2 in results2:
                    main_promotion_account_id = r2['account_id']
                    main_promotion_account_lst.append(
                        main_promotion_account_id)
            # 删除已经follow的推广账户id,获得剩余未follow的推广账户id
            if user_in_history_lst:
                for del_id in user_in_history_lst:
                    main_promotion_account_lst.remove(del_id)
            if main_promotion_account_lst:
                if len(main_promotion_account_lst) >= follow_num:
                    follow_lst = random.sample(main_promotion_account_lst,
                                               follow_num)
                else:
                    follow_lst = main_promotion_account_lst
                logger.info('Turn on the follow function, count:',
                            len(follow_lst))

                for follow_id in follow_lst:
                    sql = 'SELECT account_home_url FROM main_promotion_account WHERE account_id=%s'
                    res_follow_url = conn.op_select_one(sql, follow_id)
                    if res_follow_url:
                        follow_url = res_follow_url['account_home_url']
                        try:
                            browser.get(follow_url)
                        except:
                            pass
                        follow_XP = "//div[@id='__PWS_ROOT__']//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//button"
                        follow_flag = explicit_wait(browser, logger, "VOEL",
                                                    [follow_XP, "XPath"], 15,
                                                    False)
                        if follow_flag:
                            follow_state = follow_flag.find_element_by_xpath(
                                './div').text
                            if follow_state == 'Follow':

                                try:
                                    browser.find_element_by_xpath(
                                        follow_XP).click()
                                    time.sleep(1)
                                except:
                                    pass
                        else:

                            try:
                                follow_state = browser.find_element_by_xpath(
                                    "//div[@id='__PWS_ROOT__']//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//button/div"
                                ).text
                                if follow_state == 'Follow':
                                    browser.find_element_by_xpath(
                                        "//div[@id='__PWS_ROOT__']//div//div//div//div//div//div//div//div//div//div//div//div//div//div//div//button"
                                    ).click()
                                    time.sleep(1)
                            except:
                                pass
                        sql = 'INSERT INTO follow_history (user_id, follow_id, followed_time) VALUES (%s, %s, %s)'
                        conn.op_commit(sql,
                                       (follow_id, account_id, current_time))

                        write_txt_time()

                browser.get(homefeed_url)

            else:
                logger.info(
                    'There are no more accounts that need to be followed')
        else:
            logger.info('Today we have followed!')

    else:
        logger.info('Is promotion account, Ban follow!')
Esempio n. 24
0
def click_our_pin(browser, logger, conn, homefeed_url, process_flag,
                  current_time, scroll_num, pin_self_count, search_words_count,
                  account_id):
    logger.info('Start searching for our images')
    sql = "SELECT count(-1) AS allnum FROM pin_history WHERE account_id=%s AND add_time>=%s"
    pin_count = conn.op_select_one(sql, (account_id, current_time))['allnum']
    if pin_count < int(pin_self_count):
        sql = "SELECT web_url FROM website_url WHERE status=1"
        results = conn.op_select_all(sql)
        http_in_sql_list = []
        for res in results:
            http_in_sql = res['web_url']
            http_in_sql_list.append(http_in_sql)
        sql = "SELECT * FROM search_words WHERE word_type=1 ORDER BY RAND() LIMIT %s"
        key_wrods = conn.op_select_all(sql, search_words_count)
        if key_wrods:
            browser.get(homefeed_url)
            time.sleep(5)
            for key_wrod in key_wrods:
                search_key_words = key_wrod['word']
                board_name = key_wrod['boards']
                board_name_encode = quote(board_name, 'utf-8')
                search_url = """https://www.pinterest.com/search/pins/?q={}&rs=typed""".format(
                    board_name_encode)
                board_name_split = board_name.split(' ')
                for _ in board_name_split:
                    search_url += "&term_meta[]={}%7Ctyped".format(_.strip())
                # 个人号搜索键
                # input_search_XP = '//input[@name="searchBoxInput"]'
                # input_search_flag = explicit_wait(
                #     browser, "VOEL", [input_search_XP, "XPath"], 10, False)
                # if not input_search_flag:
                # 商业号搜索键
                #     input_search_XP = "//div[@id='searchBoxContainer']//button"

                # browser.find_element_by_xpath(input_search_XP).click()
                # time.sleep(1)
                for _ in range(scroll_num):
                    web_pin_arr_XP = '//div[@data-grid-item="true"]'
                    web_pin_arr_flag = explicit_wait(browser, logger, "VOEL",
                                                     [web_pin_arr_XP, "XPath"],
                                                     10, False)
                    if web_pin_arr_flag:
                        web_pin_arr = browser.find_elements_by_xpath(
                            web_pin_arr_XP)
                        for web_pin_one in web_pin_arr:
                            try:
                                ActionChains(browser).move_to_element(
                                    web_pin_one).perform()
                                time.sleep(3)
                                write_txt_time()
                            except:
                                pass
                            try:
                                web_pin_XP = '//a[@class="GestaltTouchableFocus"]/div/div[2]/div[1]'
                                web_pin_flag = explicit_wait(
                                    browser, logger, "VOEL",
                                    [web_pin_XP, "XPath"], 3, False)
                                if web_pin_flag:
                                    web_pin_url = browser.find_element_by_xpath(
                                        web_pin_XP).text
                                    if web_pin_url in http_in_sql_list:
                                        time.sleep(1)
                                        pin_pic_url = web_pin_one.find_element_by_xpath(
                                            './/div[@data-test-id="pinrep-image"]//img'
                                        ).get_attribute('src')
                                        save_pic(browser, conn, homefeed_url,
                                                 account_id, process_flag,
                                                 board_name, 1, pin_pic_url)
                                        sql = "SELECT count(-1) AS allnum FROM pin_history WHERE account_id=%s AND add_time>=%s"
                                        pin_count = conn.op_select_one(
                                            sql, (account_id,
                                                  current_time))['allnum']
                            except:
                                pass

                            if pin_count >= int(pin_self_count):
                                break

                            write_txt_time()

                    if pin_count >= int(pin_self_count):
                        break
                    else:
                        win32api.keybd_event(35, 0, 0, 0)
                        win32api.keybd_event(35, 0, win32con.KEYEVENTF_KEYUP,
                                             0)
                        time.sleep(5)

                if pin_count >= int(pin_self_count):
                    break

                write_txt_time()

    else:
        logger.info('Saved enough!')
Esempio n. 25
0
def save_pic(driver,
             conn,
             homefeed_url,
             account_id,
             step_flag,
             board_name='like',
             belong=2,
             pin_pic_url=False):

    add_time = (datetime.datetime.utcnow() +
                datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
    if not pin_pic_url:
        pin_pic_XP = '//a[@class="imageLink"]//img'
        pin_pic_flag = explicit_wait(driver, "VOEL", [pin_pic_XP, "XPath"], 3,
                                     False)
        if pin_pic_flag:
            pin_pic_url = driver.find_element_by_xpath(
                pin_pic_XP).get_attribute('src')

    saved_XP = '//div[@data-test-id="saved-info"]/div/a/span'
    saved_flag = explicit_wait(driver, "VOEL", [saved_XP, "XPath"], 3, False)
    if saved_flag:
        saved_text = driver.find_element_by_xpath(saved_XP).text
        if saved_text == 'Saved to ':
            print('The picture has been saved.')
    else:
        if belong == 2:
            sql = 'SELECT * FROM other_pin_history WHERE pin_pic_url=%s AND id=%s'
        elif belong == 1:
            sql = 'SELECT * FROM pin_history WHERE pin_pic_url=%s AND id=%s'
        result = conn.op_select_one(sql, (pin_pic_url, account_id))
        if result:
            print('The picture has been saved.')
        else:
            board_select_XP = '//div[@data-test-id="boardSelectionDropdown"]'
            board_select_flag = explicit_wait(driver, "VOEL",
                                              [board_select_XP, "XPath"], 10,
                                              False)
            if board_select_flag:
                board_select = driver.find_element_by_xpath(board_select_XP)
                (ActionChains(driver).move_to_element(
                    board_select).click().perform())

                input_board_XP = '//input[@id="pickerSearchField"]'
                input_board_flag = explicit_wait(driver, "VOEL",
                                                 [input_board_XP, "XPath"], 10,
                                                 False)
                if input_board_flag:
                    driver.find_element_by_xpath(input_board_XP).send_keys(
                        board_name)
                    time.sleep(5)

                    try:
                        choice_board = driver.find_elements_by_xpath(
                            '//div[@data-test-id="boardWithoutSection"]//div[text()="%s"]'
                            % board_name)
                        (ActionChains(driver).move_to_element(
                            choice_board[0]).click().perform())
                        time.sleep(2)
                    except Exception as e:
                        # print(e)
                        create_XP = '//div[@data-test-id="create-board"]/div'
                        create_flag = explicit_wait(driver, "VOEL",
                                                    [create_XP, "XPath"], 10,
                                                    False)
                        if create_flag:
                            driver.find_element_by_xpath(create_XP).click()

                            step_flag = input_board_text(driver, board_name, 1)

                    if step_flag == 1:
                        if belong == 2:
                            sql = 'INSERT INTO other_pin_history (account_id, pin_pic_url, add_time) VALUES (%s, %s, %s)'
                        elif belong == 1:
                            sql = 'INSERT INTO pin_history (account_id, pin_pic_url, add_time) VALUES (%s, %s, %s)'

                        conn.op_commit(sql,
                                       (account_id, pin_pic_url, add_time))
                    else:
                        driver.get(homefeed_url)

        write_txt_time()
Esempio n. 26
0
def save_pic(browser,
             logger,
             conn,
             homefeed_url,
             account_id,
             process_flag,
             board_name='like',
             belong=2,
             pin_pic_url=False,
             send_keys=1):

    add_time = (datetime.datetime.utcnow() +
                datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
    if not pin_pic_url:
        pin_pic_XP = "//body/div[@id='__PWS_ROOT__']/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/a/div/div/div/img[1]"
        pin_pic_flag = explicit_wait(browser, logger, "VOEL",
                                     [pin_pic_XP, "XPath"], 3, False)
        if pin_pic_flag:
            pin_pic_url = browser.find_element_by_xpath(
                pin_pic_XP).get_attribute('src')

    saved_XP = "//span[contains(text(),'Saved to')]"
    saved_flag = explicit_wait(browser, logger, "VOEL", [saved_XP, "XPath"], 5,
                               False)
    if saved_flag:
        logger.info('The picture has been saved.')
    else:
        if belong == 2:
            sql = 'SELECT * FROM other_pin_history WHERE pin_pic_url=%s AND id=%s'
        elif belong == 1:
            sql = 'SELECT * FROM pin_history WHERE pin_pic_url=%s AND id=%s'
        result = conn.op_select_one(sql, (pin_pic_url, account_id))
        if result:
            logger.info('The picture has been saved.')
        else:
            board_select_XP = '//button[@data-test-id="PinBetterSaveDropdown"]'
            board_select_flag = explicit_wait(browser, logger, "VOEL",
                                              [board_select_XP, "XPath"], 10,
                                              False)
            if board_select_flag:
                board_select = browser.find_element_by_xpath(board_select_XP)
                (ActionChains(browser).move_to_element(
                    board_select).click().perform())

                input_board_XP = '//input[@id="pickerSearchField"]'
                input_board_flag = explicit_wait(browser, logger, "VOEL",
                                                 [input_board_XP, "XPath"], 10,
                                                 False)
                if input_board_flag:
                    browser.find_element_by_xpath(input_board_XP).send_keys(
                        board_name)
                    time.sleep(5)

                    try:
                        choice_board = browser.find_elements_by_xpath(
                            '//div[@data-test-id="boardWithoutSection"]//div[text()="%s"]'
                            % board_name)
                        (ActionChains(browser).move_to_element(
                            choice_board[0]).click().perform())
                        time.sleep(2)
                    except Exception as e:
                        create_XP = '//div[@data-test-id="create-board"]/div'
                        create_flag = explicit_wait(browser, logger, "VOEL",
                                                    [create_XP, "XPath"], 10,
                                                    False)
                        if create_flag:
                            browser.find_element_by_xpath(create_XP).click()

                            process_flag = input_board_text(
                                browser, board_name, 1, send_keys)

                    if process_flag == 1:
                        if belong == 2:
                            sql = 'INSERT INTO other_pin_history (account_id, pin_pic_url, add_time) VALUES (%s, %s, %s)'
                        elif belong == 1:
                            sql = 'INSERT INTO pin_history (account_id, pin_pic_url, add_time) VALUES (%s, %s, %s)'

                        conn.op_commit(sql,
                                       (account_id, pin_pic_url, add_time))
                    else:
                        browser.get(homefeed_url)

        write_txt_time()
Esempio n. 27
0
def login_user(browser, logger, conn, proxy_ip, login_url, main_url,
               account_id, email, username, password, cookies):

    if not check_browser(browser, logger, proxy_ip):
        login_state = 2

        return login_state

    web_address_navigator(browser, login_url)

    current_url = get_current_url(browser)
    if 'www.pinterest.com' not in current_url:
        cookies = False

    cookie_loaded = None
    login_state = None

    if cookies:
        try:
            for cookie in json.loads(cookies):
                if "sameSite" in cookie and cookie["sameSite"] == "None":
                    cookie["sameSite"] = "Strict"

                browser.add_cookie(cookie)

            cookie_loaded = True
            logger.info("- Cookie for user '{}' loaded...".format(email))

            # force refresh after cookie load or check_authorization() will FAIL
            reload_webpage(browser)

            # cookie has been LOADED, so the user SHOULD be logged in
            login_state = check_authorization(browser, email,
                                              "activity counts", logger, False)

        except:

            login_state = 0

    if login_state == 1 and cookie_loaded:

        logger.info("Logged in successfully!")
        login_state = 1
        return login_state

    # if user is still not logged in, then there is an issue with the cookie
    # so go create a new cookie.
    if cookie_loaded:
        logger.info(
            "- Issue with cookie for user '{}'. Creating new cookie...".format(
                email))

        # Error could be faced due to "<button class="sqdOP L3NKy y3zKF"
        # type="button"> Cookie could not be loaded" or similar.
        # Session displayed we are in, but then a failure for the first
        # `login_elem` like the element is no longer attached to the DOM.
        # Saw this issue when session hasn't been used for a while; wich means
        # "expiry" values in cookie are outdated.
        try:
            # Since having issues with the cookie a new one can be generated,
            # if cookie cannot be created or deleted stop execution.
            logger.info("- Deleting browser cookies...")
            browser.delete_all_cookies()
            browser.refresh()
            time.sleep(random.randint(3, 5))

        except Exception as e:
            # NF: start
            if isinstance(e, WebDriverException):
                logger.exception(
                    "Error occurred while deleting cookies from web browser!\n\t{}"
                    .format(str(e).encode("utf-8")))
            login_state = 3

            return login_state
            # NF: end

    web_address_navigator(browser, login_url)

    input_username_XP = read_xpath(login_user.__name__, "input_username_XP")
    explicit_wait(browser, logger, "VOEL", [input_username_XP, "XPath"], 35)

    # user
    input_username = browser.find_element_by_xpath(input_username_XP)

    (ActionChains(browser).move_to_element(input_username).click().send_keys(
        email).perform())

    input_password = browser.find_elements_by_xpath(
        read_xpath(login_user.__name__, "input_password"))

    if not isinstance(password, str):
        password = str(password)

    (ActionChains(browser).move_to_element(
        input_password[0]).click().send_keys(password).perform())

    sleep(1)

    (ActionChains(browser).move_to_element(
        input_password[0]).click().send_keys(Keys.ENTER).perform())

    sleep(3)

    # check for wrong username or password message, and show it to the user
    try:
        error_alert = browser.find_element_by_xpath(
            "//*[contains(text(), 'The password you entered is incorrect')]")
        logger.warn(error_alert.text)
        login_state = 4

        return login_state
    except NoSuchElementException:
        pass

    try:
        error_alert = browser.find_element_by_xpath(
            "//*[contains(text(), 'Safe mode alert')]")
        logger.warn(error_alert.text)
        login_state = 5

        return login_state
    except NoSuchElementException:
        pass

    try:
        error_alert = browser.find_element_by_xpath(
            "//*[contains(text(), 'Your account has been suspended.')]")
        logger.warn(error_alert.text)
        login_state = 99

        return login_state
    except NoSuchElementException:
        pass

    try:
        error_alert = browser.find_element_by_xpath(
            "//*[contains(text(), 'Want fresh ideas in your feed')]")
        logger.warn(error_alert.text)

        reload_webpage(browser)

    except NoSuchElementException:
        pass

    explicit_wait(browser, logger, "PFL", [], 5)

    # Check if user is logged-in (If there's two 'nav' elements)
    nav = browser.find_elements_by_xpath(read_xpath(login_user.__name__,
                                                    "nav"))
    if len(nav) == 1:
        logger.info("Logged in successfully!")
        login_state = 1
        # create cookie for username and save it
        cookies_list = browser.get_cookies()

        for cookie in cookies_list:
            if "sameSite" in cookie and cookie["sameSite"] == "None":
                cookie["sameSite"] = "Strict"

        cookies_list = json.dumps(cookies_list)
        sql = 'UPDATE account SET cookies=%s WHERE id=%s'
        conn.op_commit(sql, (cookies_list, account_id))

        return login_state

    else:
        login_state = 0

        return login_state
Esempio n. 28
0
def upload_pic(driver, conn, step_flag, current_time, account_id, upload_web,
               upload_pic_min, upload_pic_max):
    all_upload_num = random.randint(upload_pic_min, upload_pic_max)
    print('Start uploading %s images...' % all_upload_num)
    while True:
        upload_flag = 1
        save_time = (datetime.datetime.utcnow() +
                     datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
        sql = "SELECT COUNT(-1) AS allnum FROM pin_upload WHERE belong_web=%s AND save_time>=%s"
        upload_num = conn.op_select_one(sql,
                                        (upload_web, current_time))['allnum']

        if upload_num < all_upload_num:
            sql = 'SELECT * FROM pin_upload WHERE saved=0 and belong_web=%s ORDER BY RAND() LIMIT 1'
            result = conn.op_select_one(sql, upload_web)

            if result:
                upload_pic_path = result['savelink']
                upload_pic_path = upload_pic_path.replace(
                    'http://guanli.lianstone.net',
                    'http://guanli2.lianstone.net')
                upload_pic_board = result['saveboard']
                upload_pic_id = result['id']
                driver.get(upload_pic_path)

                input_pic_board_XP = "//input[@id='pickerSearchField']"
                input_pic_board_flag = explicit_wait(
                    driver, "VOEL", [input_pic_board_XP, "XPath"], 10, False)
                if input_pic_board_flag:
                    driver.find_element_by_xpath(input_pic_board_XP).send_keys(
                        upload_pic_board)
                else:
                    print('Image save failed, Element not found')
                    upload_flag = 0

                if upload_flag == 1:
                    try:
                        win32api.keybd_event(13, 0, 0, 0)
                        win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP,
                                             0)
                        time.sleep(5)
                    except Exception as e:
                        pass

                    need_create_board_XP = '//input[@name="boardName"]'
                    need_create_board_flag = explicit_wait(
                        driver, "VOEL", [need_create_board_XP, "XPath"], 5,
                        False)
                    if need_create_board_flag:
                        driver.find_element_by_xpath(
                            "//div[@class='mainContainer']//div[1]/div/button"
                        ).click()
                        time.sleep(2)

                    if driver.page_source.find(
                            'Sorry! We blocked this link because it may lead to spam.'
                    ) > -1:
                        print('Domain name banned!')
                        sql = "UPDATE account SET upload_done=4 WHERE id=%s"
                        conn.op_commit(sql, account_id)
                        upload_flag = 0
                        break
                    else:
                        saved_succ_XP = '//h5[starts-with(text(), "Saved to")]'
                        saved_succ_flag = explicit_wait(
                            driver, "VOEL", [saved_succ_XP, "XPath"], 8, False)
                        if saved_succ_flag:

                            sql = "UPDATE pin_upload SET saved=1, save_time=%s WHERE id=%s"
                            conn.op_commit(sql, (save_time, upload_pic_id))

                time.sleep(3)
            else:
                sql = "UPDATE account SET upload_done=9 WHERE id=%s"
                conn.op_commit(sql, account_id)
                print('There is no data on this domain!')
                break

            write_txt_time()
        else:
            print('Enough pictures have been uploaded for today!')
            break
    time.sleep(2)