当前位置:博客首页>>Python >> 阅读正文

python+selenium实现QQ群自动签到

作者: 郑晓 分类: Python 发布于: 2016-07-13 19:30 浏览:26,983 评论(25)


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 + (e<<5)+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中。

0 0 * * * python /root/QQsign.py
#为了测试可以加个输出日志,如
0 0 * * * python /root/QQsign.py >/root/crontab-run.log 2>&1

以上任务郑晓是在root帐户中创建,定时于每天0点执行/root/目录下的QQsign.py脚本,输出日志到crontab-run.log文件中。
完成!看看以下的效果截图,是不是很贱啊?
qqsign

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/python-selenium-qqqun-sign.html

python+selenium实现QQ群自动签到:目前有25 条留言

用户评论头像 无乘国之君发表于 2021年05月30日 15:10[回复]

你好,请问python3配合windows32怎么实现qq群自动签到啊

用户评论头像 云梦发表于 2019年12月10日 13:24[回复]

谁有像我爱网的QQ和游戏签到接口或程序

用户评论头像 人群中的小黑发表于 2018年12月02日 16:48[回复]

签到的脚本是不是不能用了啊 ?[Errno 11004] getaddrinfo failed

用户评论头像 滑稽发表于 2018年02月19日 03:19[回复]

复制到QPython上运行前几行的空格总是报错,删掉手打之后又不报错了,但是第七行倒数第二段总是显示语法错误,我试了很多方法都无法解决,想问一下是什么原因造成的

    用户评论头像 郑晓发表于 2018年02月19日 19:59[回复]

    检查一下空格缩进吧,Python对缩进还是很严格, tab和空格不能混用

      用户评论头像 滑稽发表于 2018年02月21日 22:39[回复]

      Chrome/51.0.2704.84 Safari/537.36″}

      SyntaxError: invalid syntax
      第七行的最后这一部分总是报错,删除内容的话报错位置也会改变,大神能帮忙看一下吗

        用户评论头像 郑晓发表于 2018年02月22日 15:14[回复]

        语法错误,检查引号是否是英文半角引号,还有缩进的空格,最好都删除缩进重新敲一遍。

        用户评论头像 tao发表于 2018年07月21日 06:04[回复]

        Chrome/51.0.2704.84 Safari/537.36″}
        51.0.2704的.0.报错怎么办

          用户评论头像 郑晓发表于 2018年07月22日 22:28[回复]

          不知道这里会报什么错,你可以把这段删除,应该不影响的。

用户评论头像 as3344521发表于 2018年01月20日 08:49[回复]

谢谢分享 大赞

用户评论头像 11发表于 2018年01月18日 14:40[回复]

好像签到功能失效了啊,

Traceback (most recent call last):
File “a.py”, line 39, in
for cookie in cookies:
TypeError: ‘NoneType’ object is not iterable

    用户评论头像 郑晓发表于 2018年01月19日 15:08[回复]

    可能登录失败导致cookie不正确

      用户评论头像 1发表于 2018年01月19日 15:22[回复]

      怎么处理呢

用户评论头像 zh30发表于 2017年08月12日 08:55[回复]

大神请您告诉我如何用Python批量下载QQ相册原图啊,我很需要这样的教程啊,这样的教程才是真正的干货啊!!!啊啊啊, 大神求你写一篇吧,谢谢啦大神

    用户评论头像 郑晓发表于 2017年08月14日 14:46[回复]

    你是程序猿吗?其实只要能得到空间的登录状态,这些都不是事啊,参考qq空间手机版,用chrome可以很轻松的得到它获取相册列表的接口…

      用户评论头像 zh30发表于 2017年08月15日 14:58[回复]

      我不是程序员啊 不过有个详细教程应该问题不大啊

        用户评论头像 郑晓发表于 2017年08月16日 09:41[回复]

        等抽空可以写一下

          用户评论头像 zh30发表于 2017年08月18日 22:50[回复]

          好滴 3克Sns

            用户评论头像 郑晓发表于 2017年08月22日 14:58[回复]

            发了一篇关于自动登录空间和采集相册的,你可以看一下。

              用户评论头像 zh30发表于 2017年08月26日 00:18[回复]

              好的 马上去看看

用户评论头像 毛毛发表于 2017年06月26日 20:02[回复]

你好,如果实现 QQ空间发表说说啊,发表说说总是提示元素不在

    用户评论头像 郑晓发表于 2017年06月27日 23:42[回复]

    看看是不是嵌套有iframe框架

用户评论头像 俭朴的废柴发表于 2016年09月26日 18:38[回复]

你好,我根据你的代码,在桌面环境下可以正常登录并签到,但是当在centos 无桌面环境时,总是登录不了,导致拿不到cookie,各个点击加载我也加了等待时间的。各元素都能找到,就是登陆不了。

    用户评论头像 郑晓发表于 2016年09月26日 20:24[回复]

    应该是出验证码了…验证码很恶心的

用户评论头像 蒂欧娜发表于 2016年07月23日 16:59[回复]

您的博客拥有旺盛的生命力!!

发表评论

change vcode