python發送qq消息
❶ 如何用微信接收和發送QQ消息
首先要和QQ號捆綁,在微信里——設置——通用——功能——QQ離線助手,這樣即使QQ沒有上線也是可以用微信收到離線消息的
❷ 發送QQ消息的快捷鍵是什麼
剛剛申請QQ的 按shift+enter
就能發送
自己可以在聊天框發送後的向下箭頭中設置按enter就能發送
❸ 怎麼實現讓QQ在定點向某人發送消息
1、沒有下載安裝有騰訊QQ最新版的,可以到騰訊官網下載並安裝最新版內QQ。
❹ qq如何發送消息
登錄QQ,打開QQ郵箱。在QQ收信人地址上輸入收信人QQ號碼。打開要發送的文件。發送就可以了。
❺ 怎麼給一個陌生的QQ號發送即時信息
前提條件是對方允許接收即時消息,發送即時消息的方法如下:
1、登錄自己的回qq,點擊下方的【答查找】;
❻ python重復發送QQ消息為什麼只有一條
沒試過,但是根據題主的描述,發送能成功收到一條,所以考慮兩個方面因素:
1、結束有沒有特別的包發送?(一般允許長文字的通訊協議都會有起始包和結束包)
2、重復發送包,可能會被騰訊的屏蔽機制所阻擋。
❼ Python如何實現定時發送qq消息
因為生活中老是忘記各種事情,剛好又在學python,便突發奇想通過python實現提醒任務的功能(盡管TIM有定時功能),也可定時給好友、群、討論組發送qq消息。其工作流程是:訪問資料庫提取最近計劃——>根據數據內容(提醒時間、提醒對象、提醒內容)設置定時任務——>給特定qq好友發送消息。
1.軟體版本:
2.安裝依賴環境
pymysql安裝:pip install pymysql
qqbot安裝:pip install qqbot
3.資料庫操作
資料庫操作非常簡單,跟Java類似,自己去菜鳥教程看一下基礎語法就好了。
4.配置qqbot登陸信息
也可以不配置,不配置的話就是每次掃碼登陸,但這在Linux系統下不好用,我按說明將配置改成了每次將登陸二維碼發到固定qq郵箱。qqbot模塊在GitHub上,大家可以去看一下模塊說明:qqbot
配置文件默認在用戶目錄下的.qqbot-tmp/v2.3.conf,linux下類似
相關推薦:《Python視頻教程》
5. 自定義功能
6.入口主程序
7.其它
資料庫結構:
dropdatabaseif exists info_db;
createdatabaseinfo_db defaultcharactersetutf8;
use info_db;
createtabletyschele_tb(
id int(11) auto_increment primarykey,
worktime timestampnotnull,
namevarchar(10) notnull,
content varchar(100) notnull
)engine=InnoDB auto_increment=1 defaultcharset=utf8;
以上就是循環發送qq消息的代碼,以下是項目目錄結構,其中一些沒有出現的文件是自己測試所用,可以不用關心:
效果圖:
❽ 怎樣在qq上發送消息
點擊好友頭像,然後出現一個對話框,在下面打上字,然後點擊發送,就OK
❾ 如何用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()
- [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
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
- [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)
- [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:
獲取驗證碼的方法
輸入用戶名和密碼 還有驗證碼後發送一個GET請求
這裡面u代表賬號 p代表密碼 密碼是經過一定演算法加密的 verify是驗證碼
加密演算法如下
然後是登錄部分代碼
登錄成功後伺服器會返回一串json數據
ptuiCB('0','0','ebqq_type%3D10&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0®master=0&pt_login_type=1&pt_aid=0&pt_aaid=0&pt_light=0','0','登錄成功!', '小竹');
第一個為0 就表示登錄成功了 ,但是這並沒有真正的登錄成功
上面的返回值中的url是用來獲取一個關鍵cookie的 那就是ptwebqq
然後進行第二次登錄,這次才是真正的登錄
請求如下
其中的ptwebqq就是剛才我們從cookie中獲取的
這部分代碼是
第二次登陸成功後會返回一個
'''{"retcode":0,
"result":{
"uin":10588690,
"cip":1707901841,
"index":1075,
"port":59571,
"status":"online",
"vfwebqq":"85c31018d2",
"psessionid":"85c31018d2",
"user_state":0,
"f":0
}
}'''
這樣的數據結構 其中0表示登陸成功
需要把這寫數據保存下來 後面進行操作需要
登陸成功後我們就可以拉去群列表了
❿ 為什麼我給一個人發送qq消息,明明在聊天記錄上了,消息旁邊 卻出現了一個感嘆號說發送失敗
各種原因導致失敗。顯示感嘆號既表示此信息發送有問題,又讓你有機會通過點擊這個感嘆號重新發送此信息