pythonqq
❶ python能盗qq吗
单从技术说是可以的,但盗取别人的QQ是不道德的,也是非法的。建议你最好打消这种想法。
❷ 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消息的代码,以下是项目目录结构,其中一些没有出现的文件是自己测试所用,可以不用关心:
效果图:
❸ Python重复发送QQ消息为什么只有一条
没试过,但是根据题主的描述,发送能成功收到一条,所以考虑两个方面因素:
1、结束有没有特别的包发送?(一般允许长文字的通讯协议都会有起始包和结束包)
2、重复发送包,可能会被腾讯的屏蔽机制所阻挡。
❹ 如何用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表示登陆成功
需要把这写数据保存下来 后面进行操作需要
登陆成功后我们就可以拉去群列表了
❺ 用Python写qq运动周报
好多年前,delphi出1.0的时候,我是delphi狂热的爱好者。把贵阳市场上的所有delphi全买到。其实也只有几本。 后来2003年的时候,经过深思熟虑学习python,当时把北京市场上的所有python书都买到,也只有几本书。现在网上python的书估计有1个GB。
delphi特别好学,而python是不同的语言,它是脚本。 如果没有学过脚本语言开始会觉着怪。
我学过两个星期还不会编程,后来把它的所有library的帮助也看了一遍。最后才明白几个道理。
library帮助就是最好的python教程了
学习编程需要从学习别人的程序开始。最后可以看看site-packages目录里的源码
多练习,建立自己的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数据
.可以使用for或者while循环结合list的append或者insert方法赋值
❼ python可以写QQ软件吗
好多年前,delphi出1.0的时候,我是delphi狂热的爱好者。把贵阳市场上的所有delphi全买到。其实也只有几本。 后来2003年的时候,经过深思熟虑学习python,当时把北京市场上的所有python书都买到,也只有几本书。现在网上python的书估计有1个GB。
delphi特别好学,而python是不同的语言,它是脚本。 如果没有学过脚本语言开始会觉着怪。
我学过两个星期还不会编程,后来把它的所有library的帮助也看了一遍。最后才明白几个道理。
library帮助就是最好的python教程了
学习编程需要从学习别人的程序开始。最后可以看看site-packages目录里的源码
多练习,建立自己的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号吗,我有关于python. 的问题请教
留一下你的知道账号,我私信你
❾ 为什么Python的QQBot不能用
qqbot已经停止维护,现在酷q
❿ 怎么用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则提交.