前言
本文用于网站每天自动签到的学习交流哈,不多说直接上代码
实现代码
def ui_login(self,login_url,username,password,sign_in_url):
'''
:param login_url: 登陆url
:param username: 用户名
:param password: 密码
:param sign_in_url: 签到url
:return:
'''
option = webdriver.ChromeOptions()
option.add_argument('--headless')
driver = webdriver.Chrome(options=option)
driver.implicitly_wait(10)
driver.get(login_url)
driver.find_element(By.NAME,'username').send_keys(username)
driver.find_element(By.NAME,'password').send_keys(password)
driver.find_element(By.NAME,'loginsubmit').click()
sleep(3)
formhash =(driver.find_element(By.XPATH,'//*[@id="um"]/p[1]/a[5]').get_attribute('href'))
print(formhash)
formhash = formhash[-8:]
print(formhash)
cookies = driver.get_cookies()
print(cookies)
str_cookies =''
for cookie in cookies:
str_cookies = str_cookies + cookie['name'] + '=' +cookie['value'] +';'
str_cookies=str_cookies[:-1]
print(str_cookies)
sign_in_url = sign_in_url
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded",
'Cookie':str_cookies}
datas = {"formhash": formhash,
"qdmode": "1",
"todaysay": "%E7%AD%BE%E5%88%B0%E7%AD%BE%E5%88%B0",
"fastreply": "0",
"qdxq": "kx"}
respon = requests.post(sign_in_url,data=datas,headers=header, verify=False)
print(respon.text)
sleep(1)
driver.quit()
return respon
def send_wx(title,desp,url):
'''
:param title: 发送到微信消息的标题
:param desp: 发送到微信消息的内容
:param url: 调用发送消息的API
:return:
'''
url =url
payload = {
"title":title,
"desp": desp
}
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
requests.get(url, params=payload, headers=headers,verify=False)
if __name__ == '__main__':
try:
respon = ui_login()
print(respon.text)
if '签到' in respon.text:
send_wx('签到成功',respon.text)
else:
send_wx('网签到失败',respon.text)
except Exception as e:
send_wx(str(e))
print(e)
实现逻辑说明
1.先使用selenium 模块登陆进入网站
2.提取网站页面中的formhash值和Cookie
3.利用formhash和Cookie值进行请求签到接口,可以实现签到
4.集成jenkins可每天进行自动签到