网站有formhash值的自动签到实现)

网站有formhash值的自动签到实现

前言

本文用于网站每天自动签到的学习交流哈,不多说直接上代码

实现代码

 #登陆并实现签到
  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值
       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)
		#签到url
       sign_in_url = sign_in_url

       #header 根据所需设置header
       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}
       #body 根据所需设置body
       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

#利用https://sct.ftqq.com/ 发送成功消息到微信
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可每天进行自动签到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一段Python代码,可以实现mcbbs的自动签到:import requests# mcbbs 的登录地址 url_login = 'https://www.mcbbs.net/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'# 这里填写你的mcbbs用户名和密码 data = {'username': 'your_username', 'password': 'your_password'}# 发送登录请求,并携带上面的参数 response = requests.post(url_login, data=data)# 签到的地址 url_sign = 'https://www.mcbbs.net/plugin.php?id=dsu_paulsign:sign'# 发送签到请求 response = requests.get(url_sign) ### 回答2: 要实现mcbbs的自动签到,可以使用Python的requests库和BeautifulSoup库进行网页请求和网页解析。 首先,需要导入需要的库: ``` import requests from bs4 import BeautifulSoup ``` 然后,通过requests库发送GET请求,获取签到页面的HTML代码: ``` url = 'https://www.mcbbs.net/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url, headers=headers) ``` 接下来,使用BeautifulSoup库解析HTML代码,找到签到按钮所在的元素,提取需要的数据: ``` soup = BeautifulSoup(response.text, 'html.parser') sign_button = soup.find('a', class_='xi2') formhash = soup.find('input', attrs={'name': 'formhash'})['value'] ``` 然后,构造POST请求数据,并发送签到请求: ``` data = { 'formhash': formhash, 'fastreply': '0', 'handlekey': 'checkin', 'signsubmit': 'yes' } response = requests.post(url, headers=headers, data=data) ``` 最后,检查签到是否成功,并输出结果: ``` if '您的签到排名' in response.text: print('签到成功!') else: print('签到失败!') ``` 以上就是使用Python实现mcbbs的自动签到的代码。注意,在实际使用中可能需要根据网页的更新进行相应的修改。 ### 回答3: 要用Python写一段代码实现mcbbs的自动签到,首先需要了解mcbbs网站签到机制和相关页面的网址。 首先,我们可以使用`requests`库发送POST请求来模拟用户的登录,获取登录后的Cookie信息。这可以使用如下代码实现: ```python import requests login_url = "http://www.mcbbs.net/member.php?mod=logging&action=login" data = { "username": "Your_Username", "password": "Your_Password", "fastloginfield": "username" } response = requests.post(login_url, data=data) cookies = response.cookies ``` 接下来,我们需要找到签到的网址。通常在mcbbs网站上,签到的链接会以"/plugin.php?id=k_misign:sign&operation=qiandao"结尾。我们可以使用`urljoin`来拼接完整的链接,如下所示: ```python from urllib.parse import urljoin base_url = "http://www.mcbbs.net/" sign_url = urljoin(base_url, "/plugin.php?id=k_misign:sign&operation=qiandao") ``` 然后,我们可以使用获取到的Cookie信息来发送GET请求来实现签到的操作,如下所示: ```python response = requests.get(sign_url, cookies=cookies) ``` 最后,我们可以检查一下签到的结果。通常在mcbbs网站上,签到成功会返回一段包含"成功"的提示信息。我们可以使用`in`关键字来检查提示信息中是否包含"成功",如下所示: ```python if "成功" in response.text: print("签到成功!") else: print("签到失败!") ``` 综合以上代码,就可以实现mcbbs的自动签到功能了。需要注意的是,为了能够成功签到,需要提供正确的登录用户名和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值