[Python] 【原创】[Python源码]企业支付宝自动批量转账脚本
import sys
import time
import datetime
import json
import random
import urllib.parse
import requests
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
minus_time = urllib.parse.quote((datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y/%m/%d"))
with open(‘undue_pay_list_%s.txt’ % ((datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y%m%d")), ‘r’,
encoding=‘utf8’) as f:
transfer_list = json.loads(f.read())
all_data = transfer_list
driver = webdriver.Chrome()
driver.get(“https://auth.alipay.com/login/index.htm”)
driver.maximize_window()
time.sleep(random.randrange(2, 4))
login_windows = driver.current_window_handle
ant_account = “支付宝用户名”
ant_pwd = “支付宝登录密码”
ant_pay_pwd = “支付宝支付密码”
def wait_input(ele, s):
“”"
单个输入
:param ele:
:param s:
:return:
“”"
for i in s:
ele.send_keys(i)
time.sleep(random.random())
def batch_input(ele, s):
“”"
整体输入
:param ele:
:param s:
:return:
“”"
ele.send_keys(s)
def random_input(ele, s):
if s != ‘聊天提现’:
calls = [(‘wait_input’, [ele, datum.get(s)]),
(‘batch_input’, [ele, datum.get(s)])]
else:
calls = [(‘wait_input’, [ele, s]),
(‘batch_input’, [ele, s])]
choice = random.choice(calls)
this_module = sys.modules[name]
getattr(this_module, choice[0])(*choice[1])
try:
driver.find_element_by_xpath(’//*[@id=“J-loginMethod-tabs”]/li[2]’).click()
element = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J-input-user"))
)
pe = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "password_rsainput"))
)
login_btn = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J-login-btn"))
)
if element and pe and login_btn:
wait_input(element, ant_account)
pe.click()
wait_input(pe, ant_pwd)
time.sleep(random.randrange(3, 5))
login_btn.click()
# time.sleep(5)
# driver.implicitly_wait(10)
print(driver.current_window_handle)
driver.switch_to.window(driver.current_window_handle)
login_el = driver.find_element_by_link_text("转账")
login_el.click()
# while 1:
for datum in all_data:
latest_window = driver.window_handles[-1]
driver.switch_to.window(latest_window)
account = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J_payeeShowAccount"))
)
name = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "acNametxt"))
)
money = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J_transferAmount"))
)
remark = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J_remarkInput"))
)
next_ = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "J_formSubmitButton"))
)
name_div = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "acName"))
)
if account and money and remark:
random_input(account, 'alipay_account')
money.click()
random_input(money, 'product_goods')
time.sleep(random.randrange(2, 3))
if name.is_displayed():
name.click()
random_input(name, 'alipay_name')
time.sleep(random.random())
remark.click()
random_input(remark, '聊天提现')
time.sleep(random.randrange(2, 4))
next_.click()
# time.sleep(5)
# driver.implicitly_wait(10)
driver.switch_to.window(driver.current_window_handle)
time.sleep(random.randrange(3, 5))
pay_pwd = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "payPassword_rsainput"))
)
pay_chk = WebDriverWait(driver, 10, 1).until(
EC.presence_of_element_located((By.ID, "smsSendChk"))
)
if pay_pwd and pay_chk:
# 输入支付密码
wait_input(pay_pwd, ant_pay_pwd)
time.sleep(random.randrange(1, 3))
pay_chk.click()
time.sleep(random.randrange(3, 5))
latest_window = driver.window_handles[-1]
driver.switch_to.window(latest_window)
transfer_again = driver.find_element_by_link_text('转账')
transfer_again.click()
finally:
print(‘sth wrong’)