當前位置:首頁 » 編程語言 » qqpython

qqpython

發布時間: 2023-01-01 14:16:38

Ⅰ 如何用python登陸qq讀取信息

一次偶然的機會我看見了一個群里的一個QQ號總是根據你所發的消息自動回復,當時很感覺到神奇,我知道可以模擬登錄網站,沒想到竟然也能模擬登錄QQ,首先自己想到的就是如何實現模擬登錄PC端的QQ, 開始研究了下,發現QQ所發送的包都很難理解。

於是就轉到了網頁版的QQ,因為在網頁里可以捕獲所有的請求從而更好的實現模擬功能!

首先第一步就是打開網頁版的qq,打開瀏覽器的開發者模式 這里可以監控所有的請求!

打開登錄界面的的時候

會捕捉到一個GET請求

其中uin是你的QQ號

返回值是 ptui_checkVC('1','','x00x00x00x00x00xa1x92x12');

其中1表示需要驗證碼 還有一種返回值 ptui_checkVC('0','!LJV','x00x00x00x00x00xa1x92x12') 這種表示是不需要的驗證碼的

[python]view plain

  • defCheckVerify(self,uin):

  • check="h"

  • check=check.replace('{uin}',uin)

  • pattern=re.compile("ptui_checkVC′(.∗)′,′(.∗)′,′(.∗)′;")

  • result=self.Get(check)

  • checked=pattern.search(result).groups()

  • print'Step1:CheckVerify'

  • returnchecked

  • 獲取驗證碼的方法

  • [python]view plain
  • defGetVerify(self):

  • #url='hage?&uin='+str(self.QQ)+'&aid=1002101&0.45644426648505'+str(random.randint(10,99))

  • verify="htqq.com/getimage?aid=1003903&r=0.6472875226754695&uin={QQ}&cap_cd=aSD-ZVcNEcozlZUurhNYhp-MBHf4hjbJ"

  • verify=verify.replace('{QQ}',self.QQ)

  • path=r"c:/verify/1.jpg"

  • #data=urllib.urlretrieve(url,path)

  • data=urllib2.urlopen(verify)

  • localPic=open(r"c:/verify/1.jpg",'wb')

  • localPic.write(data.read())

  • localPic.close()

  • data.close()

  • 輸入用戶名和密碼 還有驗證碼後發送一個GET請求

    這裡面u代表賬號 p代表密碼 密碼是經過一定演算法加密的 verify是驗證碼

    加密演算法如下

  • [python]view plain
  • defPasswordSecret(self,password,v1,v2,md5=True):

  • ifmd5==True:

  • password=self.PCMd5(password).upper()

  • length=len(password)

  • temp=''

  • foriinrange(0,length,2):

  • temp+=r'x'+password[i:i+2]

  • returnself.PCMd5(self.PCMd5(self.hex2asc(temp)+self.hex2asc(v2)).upper()+v1).upper()

  • #md5加密函數

  • defPCMd5(self,s):

  • h=hashlib.md5()

  • h.update(s)

  • returnh.hexdigest()

  • #16進制轉字元

  • defhex2asc(self,s):

  • _str="".join(s.split(r'x'))

  • length=len(_str)

  • data=''

  • foriinrange(0,length,2):

  • data+=chr(int(_str[i:i+2],16))

  • returndata

  • 然後是登錄部分代碼

  • [python]view plain
  • defLogin(self,uin,pwd):

  • #獲取參數

  • cheked=self.CheckVerify(uin)

  • #加密密碼

  • #pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])

  • #pwd=self.PasswordSecret(pwd,r'AAST',r'x00x00x00x00x00xa1x92x12')

  • loginurl="h&t=1&g=1&js_type=0&js_ver=10080&login_sig=YPD0P*&pt_uistyle=5"

  • loginurl=loginurl.replace('{uin}',uin)

  • #loginurl=loginurl.replace('{pwd}',pwd)

  • #loginurl=loginurl.replace('{verify}',cheked[1])

  • #result=Get(loginurl)

  • if(cheked[0]=="1"):

  • #下載驗證碼

  • self.GetVerify()

  • image=Image.open(r"c:/verify/1.jpg")

  • image.show()

  • code=raw_input("verifycode:").strip()

  • loginurl=loginurl.replace('{verify}',code.upper())

  • pwd=self.PasswordSecret(pwd,r''+code.upper(),cheked[2])

  • #pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])

  • else:

  • loginurl=loginurl.replace('{verify}',cheked[1])

  • pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])

  • loginurl=loginurl.replace('{pwd}',pwd)

  • result=self.Get(loginurl,'ssl.ptlogin2.qq.com','hin2.qq.com/cgi-bin/login?daid=164&target=self&style=5&mibao_css=m_webqq&appid=1003903&enable_qlogin=0&no_verifyimg=1&s_urlm%2Floginproxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20140514001',None)

  • print'Step2:Login'

  • pattern=re.compile("ptuiCB′(.∗)′,′(.∗)′,′(.∗)′,′(.∗)′,′(.∗)′,s′(.∗)′;")

  • ret=pattern.search(result).groups()

  • #獲取必要的cookie否則第二次登陸會出錯

  • self.Get(ret[2])

  • print'Step3:GetCookie'

  • forcinself.cj:

  • ifc.name=="ptwebqq":

  • self.ptwebqq=c.value

  • returnresult


  • 登錄成功後伺服器會返回一串json數據

    ptuiCB('0','0','ebqq_type%3D10&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=1&pt_aid=0&pt_aaid=0&pt_light=0','0','登錄成功!', '小竹');

    第一個為0 就表示登錄成功了 ,但是這並沒有真正的登錄成功

    上面的返回值中的url是用來獲取一個關鍵cookie的 那就是ptwebqq

    然後進行第二次登錄,這次才是真正的登錄

    請求如下

  • Accept:*/*

  • Accept-Encoding:gzip,deflate,sdch

  • Accept-Language:zh-CN,zh;q=0.8

  • Connection:keep-alive

  • Content-Length:244

  • Content-Type:application/x-www-form-urlencoded

  • Cookie:o_cookie=455910092; RK=fMEaWEZ0Qc; ts_last=web2.qq.com/; ts_refer=www..com/; ts_uid=4588821804; pgv_pvid=914251705; pgv_info=ssid=s3525422600&pgvReferrer=; verifysession=h02LeYrtarkWBZeSu_czkiczeNSNlDm7V1mCm-**; ptui_loginuin=10588690; ptisp=cnc; ptcz=; ptwebqq=; pt2gguin=o0010588690; uin=o0010588690; skey=@gmEO6N2JD; p_uin=o0010588690; p_skey=cZ5*kS-_; pt4_token=1SyuJ39Eq6oKEwEhGIizeg__

  • Host:d.web2.qq.com

  • Origin:h

  • Referer:htttml?v=20110331002&callback=1&id=2

  • User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36

  • Form Dataview sourceview URL encoded

  • r:{"status":"online","ptwebqq":"","passwd_sig":"","clientid":"7963288","psessionid":null}

  • clientid:7963288

  • psessionid:null

  • 其中的ptwebqq就是剛才我們從cookie中獲取的

    這部分代碼是

  • [python]view plain
  • defLogin2(self):

  • try:

  • url="htel/login2"

  • postdata="r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{$ptwebqq}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{$clientid}%22%2C%22psessionid%22%3Anull%7D&clientid={$clientid}&psessionid=null"

  • postdata=postdata.replace("{$ptwebqq}",self.ptwebqq)

  • postdata=postdata.replace("{$clientid}",str(self.clientid))

  • print'Step4:Login2'

  • result=self.Post(url,postdata,QQRobot.HOST[0],QQRobot.REFERER[0],QQRobot.ORIGIN[0])

  • retjson=json.loads(result)

  • retjson=retjson["result"]

  • returnretjson

  • exceptException,e:

  • print"Login2error"+str(e)

  • 第二次登陸成功後會返回一個

    '''{"retcode":0,
    "result":{
    "uin":10588690,
    "cip":1707901841,
    "index":1075,
    "port":59571,
    "status":"online",
    "vfwebqq":"85c31018d2",
    "psessionid":"85c31018d2",
    "user_state":0,
    "f":0
    }
    }'''

    這樣的數據結構 其中0表示登陸成功

    需要把這寫數據保存下來 後面進行操作需要

    登陸成功後我們就可以拉去群列表了

  • [python]view plain
  • #獲取群列表信息

  • defGetGroupNameList(self,vfwebqq):

  • try:

  • url="h/get_group_name_list_mask2"

  • postdata="r=%7B%22vfwebqq%22%3A%22{$vfwebqq}%22%7D"

  • postdata=postdata.replace("{$vfwebqq}",vfwebqq)

  • ret=self.Post(url,postdata,QQRobot.HOST[1],QQRobot.REFERER[1],QQRobot.ORIGIN[1])

  • print'Step5:GetGroupList'

  • retjson=json.loads(ret)

  • retjson=retjson["result"]

  • self.grouplist=retjson

  • forgroupinself.grouplist['gnamelist']:

  • printgroup["code"],group["name"]

  • exceptException,e:

Ⅱ 利用python + qqbot + 聚合數據api 實現qq智能聊天機器人

from qqbot import QQBotSlot as qqbotslot,RunBot
from random import randint
@qqbotslot
def onQQMessage(bot, contact, member, content):
#在這里過濾過來的輸入, content的內容是監聽qq上所有的輸入
# 當群里有人@你的時候 傳入過來的會被轉化為[@ME]
# 所以使用 @ME 來過濾其他人在群裡面at你
if '@ME' in content:
#四個參數的詳細
#bot : QQBot 對象,提供 List/SendTo/Stop/Restart 四個介面,詳見本文檔第五節
#contact : QContact 對象,消息的發送者,具有 ctype/qq/uin/nick/mark/card/name 屬性,這些屬性都是 str 對象
#member : QContact 對象,僅當本消息為 群或討論組 消息時有效,代表實際發消息的成員
#content : str 對象,消息內容
bot.SendTo(contact,'@'+ member.name+ " 哈哈 ")
#這里是因為部分群裡面的at無法轉化為[@ME]所以自己過濾at自己的內容
elif '@' in content and '光' in content:
bot.SendTo(contact,'@'+ member.name+ " 哈哈 ")
RunBot()```

Ⅲ python可以寫QQ軟體嗎

好多年前,delphi出1.0的時候,我是delphi狂熱的愛好者。把貴陽市場上的所有delphi全買到。其實也只有幾本。 後來2003年的時候,經過深思熟慮學習python,當時把北京市場上的所有python書都買到,也只有幾本書。現在網上python的書估計有1個GB。


delphi特別好學,而python是不同的語言,它是腳本。 如果沒有學過腳本語言開始會覺著怪。


我學過兩個星期還不會編程,後來把它的所有library的幫助也看了一遍。最後才明白幾個道理。

  1. library幫助就是最好的python教程了

  2. 學習編程需要從學習別人的程序開始。最後可以看看site-packages目錄里的源碼

  3. 多練習,建立自己的python學習筆記與庫(又叫cookbook),這樣會加速你的學習


大約用了幾年時間,python已經熟悉到主要的庫都背下來了。不過仍然有大部分的python領域我還沒有涉及。不過足夠用了。


python已經有一個webqq的封裝版本,很簡單,100行左右。在linux上常用。


如果寫一套完成的qq,對於python來講太容易了。 就相當於一個作業。很輕松,2-3天就做完了。客戶端與服務端可以一起做。


python是很強大的,快速開發語言。某些方面比delphi快。不過界面方面delphi比python又強了幾代。


C語言是一個基礎學習語言。與python有很大關系。因為python與C可以很好的融合。 這是python的高級話題,開始的時候,C與python完全沒有關系。後來你會交叉使用。


C語言是一個獨立的語言,學習好有單獨的用途,當然對於java, c++, 其它的三代語言學習都有幫助。但是對python的初學者沒有特別的幫助 。

Ⅳ python 在qq消息中下載文件

主要使用selenium+chrome,加了Tkinter的簡單GUI,代碼比較簡單,就不細說了,請自行品味:
獲取qq好友列表
這個是從QQ充值獲取的,可得"原始數據",「分組」,「顯示名」,「QQ號」:
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import tkinter as tk
from tkinter.filedialog import asksaveasfilename
from bs4 import BeautifulSoup
import lxml
import openpyxl
from openpyxl import Workbook
def callback():
driver.switch_to_frame('webpay-iframe')
iframe =driver.find_element_by_xpath('//*[@id="midas-webpay-main-1450000186"]/div[2]/div[1]/iframe')
driver.switch_to_frame(iframe)
html=driver.page_source
soup=BeautifulSoup(html,"lxml")
a=soup.find_all(attrs={'class':'icon-friend-s'})
wb = Workbook()
ws = wb.active
ws.append(["原始數據","分組","顯示名","QQ號"])
for i in a:
if i.next_sibling !=' {undefined{el.name}}({undefined{el.qq}})':

#re,qq匹配:
#pattern = re.compile(r'[1-9][0-9]{4,}')
#re,括弧匹配:
#pattern = re.compile(r'(?<=).∗?(?=).∗?(?=)')
#m = pattern.search(i.next_sibling)
k=0

for x in i.next_sibling:
if x == '(':
f=k
if x == ')':
l=k
k=k+1
ws.append([i.next_sibling,i.next_sibling.parent.parent.parent.parent.find(attrs={'class':'icon-more-friend'}).next_sibling,i.next_sibling[:f],i.next_sibling[f+1:l]])
print([i.next_sibling,i.next_sibling.parent.parent.parent.parent.find(attrs={'class':'icon-more-friend'}).next_sibling,i.next_sibling[:f],i.next_sibling[f+1:l]])
wb.save(asksaveasfilename(defaultextension ='.xlsx',filetypes = [('Excel 工作簿', '*.xlsx')]))

Ⅳ python能盜qq嗎

單從技術說是可以的,但盜取別人的QQ是不道德的,也是非法的。建議你最好打消這種想法。

Ⅵ 怎麼用python對qq登錄界面寫測試腳本

1. 用Python封裝被測試介面,對於HTTP介面我們通常會採用 GET和POST 2種調用方式去訪問,所以必須把這2種方式都封裝進去
# -*- coding:gb2312 -*-
import urllib2,urllib
'''
函數說明:url 特殊字元編碼轉換
作者:xiaonan
輸入參數:待轉換的字元串數據
輸出參數:轉換完成後的字元串數據
'''
def urlcode(data):
return urllib2.quote(str(data))

'''
函數說明:獲取用戶信息的API介面
作者:xiaonan
輸入參數:用戶名(uname),HTTP介面調用方式(GET或者POST)
輸出參數:HTTP介面調用返回數據
'''
def GetUserInfo(uname,method):
if method == 'GET':
url = 'http://ip:port/interface/GetUserInfo.php?uname='+urlcode(uname)
result = urllib2.urlopen(url).read()
return result

if method == 'POST':
url = 'http://ip:port/interface/GetUserInfo.php'
values = {'uname' : uname}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
result = response.read()
return result
2. 編寫、組織測試腳本, 准備測試數據
根據Testcase的具體業務邏輯用事先准備好的測試數據去調用封裝好的API介面,驗證實際返回結果是否與預期返回結果一致.
測試數據可以以各種形式存放,如Excel數據表:
TestCaseName uname method Expected Result
TestCase1 aaaa GET ....
TestCase2 aaaa POST ....
TestCase3 bbbb GET ....
... ... ... ....
# -*- coding:gb2312 -*-
import xlrd
'''
函數說明: Testcase 腳本
作者:xiaonan
輸入參數:測試數據,API介面
輸出參數:測試日誌,測試報告
'''
def GetUser():
bk = xlrd.open_workbook(excel文件名稱) # 打開excel文件
sh = bk.sheet_by_name(excel表名)# 打開excel表
nrows = sh.nrows # 獲取總行數
for i in range(1,nrows):
TestCase = sh.cell_value(i,0)
uname = sh.cell_value(i,1)
method = sh.cell_value(i,2)
EX_Result=sh.cell_value(i,3)
WriterLog('Testcase Name:'+TestCase+'TestData: uname = '+uname+' ,method = '+method+' ,EX_Result = ' + ,EX_Result) # 寫測試日誌
AC_result = GetUserInfo(uname,method) # 調用API介面
WriterLog('AC_result = ' + AC_result) # 寫測試日誌
if EX_Result == AC_result: #實際結果與預期結果對比
WriterLog(...) #寫測試日誌
WriterReport(...)#寫測試報告
else
WriterLog(...)#寫測試日誌
WriterReport(...)#寫測試報告

3. 組織測試套,用驅動文件去調用執行所有測試套件,完成相關測試,並生成測試日誌及測試報告.
# -*- coding:gb2312 -*-
'''
函數說明: Testsuit Driver驅動腳本
作者:xiaonan
輸入參數:TestCase 腳本
輸出參數:測試日誌,測試報告

'''
if __name__ == '__main__':
...
WriterLog() #寫測試日誌
GetUser() # TestCase 腳本
...
...
Report(....) # 統計匯總所有測試報告數據,以文件或頁面形式呈現.
4. 執行測試腳本,分析測試結果. 根據測試報告,如果有Bug則提交.

Ⅶ Python模擬發送QQ圖片變黑色

因為圖片的通透度設置錯誤。
mask在A上的中央是255全通透,他破壞了我們的150不通透,得到了全黑的顯示。這里的通透應該與原圖A通道相同,否則會破壞A通道通透度。
python在生活中可以實現提醒任務的功能,也可定時給好友、群、討論組發送qq消息。

Ⅷ 電腦搞的Python發送到QQ給好友看怎麼看不了

請詳細說明一下問題。如果是以下問題,可以嘗試解決一下。

  1. 你的好友沒有python環境,是無法打開運行.py文件,可以嘗試使用pyinstaller來進行打包。

    安裝方法:pip3 install pyinstaller #或pip3 install -i https://pypi.tuna.tsinghua.e.cn/simple pyinstaller

2.沒有合適的軟體打開,可以使用:文本文檔打開,pycharm,vs code等軟體進行打開

Ⅸ 如何通過QQ文件安裝python3.8

通過QQ的面對面快傳上傳python3.8文件後,點擊處於QQ文件的python3.8,之後按照步驟即可完成安裝。
先是安裝python3.8。點擊Next。選擇自己想要存儲文件夾,點擊Install。開始安裝。安裝完成後點擊Close結束安裝。
關於如何做的故事:英特爾公司的創始入之一,領導英特爾發展壯大的前首席執行官和董事長,安迪格魯夫曾經給我上了人生的重要一課。有一次,他要聽幾位下屬關於賽揚處理器市場推廣的工作匯報,我當時作為咨詢顧問參加了會議。中端理論當時已經成為英特爾的一個重大威脅,AMD和賽瑞克斯公司已經在低端微處理器市場搶佔了大量的市場份額,越來越多的公司開始在入門級電腦上使用這兩家公司的產品代替英特爾晶元。與此同時,這兩家公司還在不斷向中端市場進軍,英特爾到了必須採取對策的時候。會議中途休息的時候,格魯夫問我:「你覺得我們應該怎麼辦?"我認真地回答說,你們需要成立一個新的業務部門,這個部門可以有自己單獨的財務系統和銷售目標。格魯夫卻用他一貫的生硬語氣說:「您真是個天真的學者!我問你怎麼做,你卻告訴我應該做什麼。」他接著說:「我知道自己應該做什麼,只是不知道如何才能做好。」我當時窘得恨不得找個地縫鑽進去,格魯夫說得對,我只是個天真的學者,剛才的回答只能證明我不清楚「做什麼"和"怎麼做」的區別。當我回到哈佛之後,我曾想要改變自己的研究方向,去發展一套「怎麼做」的理論體系,但後來還是放棄了,因為我確實不知道自己怎樣才能創新出這么一套理論來。我的研究重點仍一如既往地集中在商業中需要「做什麼」上,我們不妨稱之為「戰略」。毫不誇張地說,只要是靜下心來閱讀、體會、理解我們關於戰略、創新和成長方面研究成果的經理人,大都從中獲得了莫大的幫助,在事業上也大都取得了更加輝煌的成就。然而,在我們之前的研究中,還沒來得及給大家詳細論述的一點是:在時機發生改變的時候,要想管理好一家公司,應該『怎麼做』。」

Ⅹ [python練手]使用WordCloud模塊將qq聊天記錄生成炫酷的關鍵詞雲

這個項目的github地址。 https://github.com/susususuhanmo/QQChatLogWordCloud
最近准備開始學習python,寫一個綜合一點的小demo練練手~

讀取文件

編寫清洗函數,清洗聊天數據。主要是需要清洗掉一些無用的關鍵詞:

分詞,分詞結果如果出現一些特有的詞語截了一半或者截多了幾個字元的情況,可以手動添加分詞詞庫。

根據關鍵詞數據,建立pandas的DataFrame,通過停詞詞庫過濾掉一些中文中不適合做關鍵詞的詞語,進行關鍵詞數統計並根據次數排序。

詞雲屬性解釋

調整成120之後就好看很多,有很明顯的差別。

設置圖片為可愛的莫古力

根據這個莫古力的顏色分布,生成的詞雲如下,我這個不是特別好看,大家可以選擇輪廓明顯一點的圖片來生成。

相比默認的模式,

關於更詳細的詞雲配置可以看這篇文章,這個作者對wordcloud的配置講解的十分詳細。
https://blog.csdn.net/heyuexianzi/article/details/76851377

在你想導出的人或群處右鍵,點導出消息記錄,

然後選擇txt格式

熱點內容
asp搜索源碼 發布:2025-07-03 15:49:55 瀏覽:234
醫美大資料庫 發布:2025-07-03 15:47:07 瀏覽:356
c語言將二進制轉化為十進制 發布:2025-07-03 15:32:47 瀏覽:987
c語言幫助文檔 發布:2025-07-03 15:22:43 瀏覽:319
雙埠存儲器在情況下會發生讀寫沖突 發布:2025-07-03 15:12:54 瀏覽:270
快站資料庫 發布:2025-07-03 14:45:44 瀏覽:39
jsp獲取上傳文件路徑 發布:2025-07-03 14:44:46 瀏覽:569
php時間微妙 發布:2025-07-03 14:39:38 瀏覽:843
巨豆豆手機回復出廠密碼是什麼 發布:2025-07-03 14:35:19 瀏覽:474
演算法的三個 發布:2025-07-03 14:35:19 瀏覽:698