概述

现在是新型冠状病毒肺炎肆虐的高峰期,就像2003年非典一样,对国家的影响及其大,国家卫生局也是启动了一级卫生响应。疫情导致中小学、幼儿园乃至高校不得不延长寒假以避免大面积扩散。各校开始实施停课不停学的网上授课方式,但是有的学校强制要求学生每天签到,未签到次数达5次即开除的魔鬼要求相信同学们都受不了吧。于是有同学找到我问能不能搞个QQ群自动签到功能?答案是肯定的。但是小编自己还是自己每天起来签到的,虽然规定严格,偶尔偷偷懒是可以的,还是不建议滥用。下面介绍具体怎么进行QQ群自动签到

python+selenium实现的QQ群自动签到!
QQ群里的群签到功能经常会断签,如果能用脚本去自动签到,就再也不怕忘签了~下面会告诉你如何使用python来实现QQ群的定时自动签到。

以下代码基于linux(centos),Python2.7,且须要有pyvirtualdisplay和selenium库支持。

#!-*- coding:utf-8 -*-
from pyvirtualdisplay import Display
from selenium import webdriver
import requests
#要签到的QQ群号列表
groupid = [123456789,987654321]
headers = {'Content-Type':'application/x-www-form-urlencoded','Host':'qiandao.qun.qq.com','Origin':'http://qiandao.qun.qq.com','Referer': 'http://qiandao.qun.qq.com','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36'}
#创建一个启动session的请求对象
s = requests.Session()
def login():
        try:
                #启动一个虚拟桌面
                display = Display(visible=0, size=(1100,700))
                display.start()
                driver = webdriver.Firefox()
                driver.set_window_position(20, 40)
                driver.set_window_size(1100,700)
                #打开QQ登录界面 准备登录
                driver.get('http://qzone.qq.com')
                driver.switch_to_frame('login_frame')
                driver.find_element_by_id('switcher_plogin').click()
                driver.find_element_by_id('u').clear()
                #填写QQ帐号
                driver.find_element_by_id('u').send_keys('qq号')
                driver.find_element_by_id('p').clear()
                #填写QQ密码
                driver.find_element_by_id('p').send_keys('****zh30.com****')
                #模拟点击登录按钮 执行登录 获取cookie
                driver.find_element_by_id('login_button').click()
                cookies = driver.get_cookies()
                #退出浏览器
                driver.quit()
                display.stop()
        return cookies
        except:
                pass

cookies = login()
for cookie in cookies:
        if cookie['name'] == 'skey':
                skey = cookie['value']
        s.cookies.set(cookie['name'], cookie['value'])

#计算bkn并存入cookie
e = 5381
for i in range(len(skey)):
    e = e + (e5)+ord(skey[i])
bkn = str(2147483647 & e)
s.cookies.set('Gtk', bkn)
#签到方法
def sign(groupid):
    for gid in groupid:
        response = s.post('http://qiandao.qun.qq.com/cgi-bin/sign', data={'gc':gid, 'is_sign':0, 'bkn':bkn}, headers=headers)
        responseJson = response.json()
        if responseJson.has_key('em') and responseJson['em'] == 'no login':
            break
#开始签到
sign(groupid)

好了,这样就完成了一个自动签到的脚本,运行它便会自动启动浏览器、自动填上帐号密码登录、循环签到。但它只执行一次,我们要把它加入到计划任务crontab中。
python /root/QQsign.py
为了测试可以加个输出日志,如
python /root/QQsign.py >/root/crontab-run.log 2>&1
以上任务可在root帐户中创建,定时于每天0点执行/root/目录下的QQsign.py脚本,输出日志到crontab-run.log文件中。

Last modification:August 24th, 2020 at 03:27 am
小编饿得写不动了,请给小编加鸡腿