當(dāng)前位置:博客首頁(yè)>>Python >> 閱讀正文

python+selenium實(shí)現(xiàn)QQ群自動(dòng)簽到

作者: 鄭曉 分類(lèi): Python 發(fā)布于: 2016-07-13 19:30 瀏覽:27,659 評(píng)論(25)


python+selenium實(shí)現(xiàn)的QQ群自動(dòng)簽到!
QQ群里的群簽到功能經(jīng)常會(huì)斷簽,如果能用腳本去自動(dòng)簽到,就再也不怕忘簽了~下面鄭曉會(huì)告訴你如何使用python來(lái)實(shí)現(xiàn)QQ群的定時(shí)自動(dòng)簽到(邪惡臉)。
以下代碼基于linux(centos),Python2.7,且須要有pyvirtualdisplay和selenium庫(kù)支持。


#!-*- coding:utf-8 -*-
from pyvirtualdisplay import Display
from selenium import webdriver
import requests
#要簽到的QQ群號(hào)列表
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"}
#創(chuàng)建一個(gè)啟動(dòng)session的請(qǐng)求對(duì)象
s = requests.Session()
def login():
try:
#啟動(dòng)一個(gè)虛擬桌面
display = Display(visible=0, size=(1100,700))
display.start()
driver = webdriver.Firefox()
driver.set_window_position(20, 40)
driver.set_window_size(1100,700)
#打開(kāi)QQ登錄界面 準(zhǔn)備登錄
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()
#填寫(xiě)QQ帳號(hào)
driver.find_element_by_id('u').send_keys('qq號(hào)')
driver.find_element_by_id('p').clear()
#填寫(xiě)QQ密碼
driver.find_element_by_id('p').send_keys('****zh30.com****')
#模擬點(diǎn)擊登錄按鈕 執(zhí)行登錄 獲取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'])

#計(jì)算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#開(kāi)始簽到sign(groupid)

好了,這樣就完成了一個(gè)自動(dòng)簽到的腳本,運(yùn)行它便會(huì)自動(dòng)啟動(dòng)瀏覽器、自動(dòng)填上帳號(hào)密碼登錄、循環(huán)簽到。但它只執(zhí)行一次,我們要把它加入到計(jì)劃任務(wù)crontab中。

0 0 * * * python /root/QQsign.py
#為了測(cè)試可以加個(gè)輸出日志,如
0 0 * * * python /root/QQsign.py >/root/crontab-run.log 2>&1

以上任務(wù)鄭曉是在root帳戶(hù)中創(chuàng)建,定時(shí)于每天0點(diǎn)執(zhí)行/root/目錄下的QQsign.py腳本,輸出日志到crontab-run.log文件中。
完成!看看以下的效果截圖,是不是很賤???
qqsign

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/python-selenium-qqqun-sign.html

python+selenium實(shí)現(xiàn)QQ群自動(dòng)簽到:目前有25 條留言

用戶(hù)評(píng)論頭像 無(wú)乘國(guó)之君發(fā)表于 2021年05月30日 15:10[回復(fù)]

你好,請(qǐng)問(wèn)python3配合windows32怎么實(shí)現(xiàn)qq群自動(dòng)簽到啊

用戶(hù)評(píng)論頭像 云夢(mèng)發(fā)表于 2019年12月10日 13:24[回復(fù)]

誰(shuí)有像我愛(ài)網(wǎng)的QQ和游戲簽到接口或程序

用戶(hù)評(píng)論頭像 人群中的小黑發(fā)表于 2018年12月02日 16:48[回復(fù)]

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

用戶(hù)評(píng)論頭像 滑稽發(fā)表于 2018年02月19日 03:19[回復(fù)]

復(fù)制到QPython上運(yùn)行前幾行的空格總是報(bào)錯(cuò),刪掉手打之后又不報(bào)錯(cuò)了,但是第七行倒數(shù)第二段總是顯示語(yǔ)法錯(cuò)誤,我試了很多方法都無(wú)法解決,想問(wèn)一下是什么原因造成的

    用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2018年02月19日 19:59[回復(fù)]

    檢查一下空格縮進(jìn)吧,Python對(duì)縮進(jìn)還是很?chē)?yán)格, tab和空格不能混用

      用戶(hù)評(píng)論頭像 滑稽發(fā)表于 2018年02月21日 22:39[回復(fù)]

      Chrome/51.0.2704.84 Safari/537.36″}

      SyntaxError: invalid syntax
      第七行的最后這一部分總是報(bào)錯(cuò),刪除內(nèi)容的話報(bào)錯(cuò)位置也會(huì)改變,大神能幫忙看一下嗎

        用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2018年02月22日 15:14[回復(fù)]

        語(yǔ)法錯(cuò)誤,檢查引號(hào)是否是英文半角引號(hào),還有縮進(jìn)的空格,最好都刪除縮進(jìn)重新敲一遍。

        用戶(hù)評(píng)論頭像 tao發(fā)表于 2018年07月21日 06:04[回復(fù)]

        Chrome/51.0.2704.84 Safari/537.36″}
        51.0.2704的.0.報(bào)錯(cuò)怎么辦

          用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2018年07月22日 22:28[回復(fù)]

          不知道這里會(huì)報(bào)什么錯(cuò),你可以把這段刪除,應(yīng)該不影響的。

用戶(hù)評(píng)論頭像 as3344521發(fā)表于 2018年01月20日 08:49[回復(fù)]

謝謝分享 大贊

用戶(hù)評(píng)論頭像 11發(fā)表于 2018年01月18日 14:40[回復(fù)]

好像簽到功能失效了啊,

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

    用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2018年01月19日 15:08[回復(fù)]

    可能登錄失敗導(dǎo)致cookie不正確

      用戶(hù)評(píng)論頭像 1發(fā)表于 2018年01月19日 15:22[回復(fù)]

      怎么處理呢

用戶(hù)評(píng)論頭像 zh30發(fā)表于 2017年08月12日 08:55[回復(fù)]

大神請(qǐng)您告訴我如何用Python批量下載QQ相冊(cè)原圖啊,我很需要這樣的教程啊,這樣的教程才是真正的干貨啊?。?!啊啊啊, 大神求你寫(xiě)一篇吧,謝謝啦大神

    用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2017年08月14日 14:46[回復(fù)]

    你是程序猿嗎?其實(shí)只要能得到空間的登錄狀態(tài),這些都不是事啊,參考qq空間手機(jī)版,用chrome可以很輕松的得到它獲取相冊(cè)列表的接口…

      用戶(hù)評(píng)論頭像 zh30發(fā)表于 2017年08月15日 14:58[回復(fù)]

      我不是程序員啊 不過(guò)有個(gè)詳細(xì)教程應(yīng)該問(wèn)題不大啊

        用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2017年08月16日 09:41[回復(fù)]

        等抽空可以寫(xiě)一下

          用戶(hù)評(píng)論頭像 zh30發(fā)表于 2017年08月18日 22:50[回復(fù)]

          好滴 3克Sns

            用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2017年08月22日 14:58[回復(fù)]

            發(fā)了一篇關(guān)于自動(dòng)登錄空間和采集相冊(cè)的,你可以看一下。

              用戶(hù)評(píng)論頭像 zh30發(fā)表于 2017年08月26日 00:18[回復(fù)]

              好的 馬上去看看

用戶(hù)評(píng)論頭像 毛毛發(fā)表于 2017年06月26日 20:02[回復(fù)]

你好,如果實(shí)現(xiàn) QQ空間發(fā)表說(shuō)說(shuō)啊,發(fā)表說(shuō)說(shuō)總是提示元素不在

    用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2017年06月27日 23:42[回復(fù)]

    看看是不是嵌套有iframe框架

用戶(hù)評(píng)論頭像 儉樸的廢柴發(fā)表于 2016年09月26日 18:38[回復(fù)]

你好,我根據(jù)你的代碼,在桌面環(huán)境下可以正常登錄并簽到,但是當(dāng)在centos 無(wú)桌面環(huán)境時(shí),總是登錄不了,導(dǎo)致拿不到cookie,各個(gè)點(diǎn)擊加載我也加了等待時(shí)間的。各元素都能找到,就是登陸不了。

    用戶(hù)評(píng)論頭像 鄭曉發(fā)表于 2016年09月26日 20:24[回復(fù)]

    應(yīng)該是出驗(yàn)證碼了…驗(yàn)證碼很惡心的

用戶(hù)評(píng)論頭像 蒂歐娜發(fā)表于 2016年07月23日 16:59[回復(fù)]

您的博客擁有旺盛的生命力??!

發(fā)表評(píng)論

change vcode