当前位置:首页 » 编程语言 » qqpython登录

qqpython登录

发布时间: 2023-08-31 17:09:04

㈠ 如何用python+selenium登录QQ音乐

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
def login_qq(user,password):
'''
1、有2个frame要先进顶层的才能卖困进入下层
2、考虑有无登录qq的情况
'''
driver=webdriver.Chrome()
driver.get('https://y.qq.com/')
driver.refresh()
time.sleep(1)
login= driver.find_element_by_css_selector('body > div.mod_header > div > div.header__opt > span > a.top_login__link.js_login')
login.click()
time.sleep(1)
#1
topframe=driver.find_element_by_id("frame_tips"枝乎)
driver.switch_to_frame(topframe)
#1
iframe=driver.find_element_by_id("ptlogin_iframe")
driver.switch_to_frame(iframe)
time.sleep(1)
#2
try:
userpassword=driver.find_element_by_id("switcher_plogin")
userpassword.click()
time.sleep(1)
user=driver.find_element_by_id("u")
user.send_keys(user)
password=driver.find_element_by_id("p")
password.send_keys(password)
sure=driver.find_element_by_id("login_button")
sure.click()
#2
except:
user=driver.find_element_by_id("u")
user.send_keys(user)
password=driver.find_element_by_id("猛配悉p")
password.send_keys(password)
sure=driver.find_element_by_id("login_button")
sure.click()

㈡ 如何使用python语言实现用户登录系统

1、使用python3执行程序。按提示输入1或2,登录或退出程序
2、输入用户名后,如果用户名被锁定及无效用户名,程序会退出,请确保输入正确。
3、输入用户名正确后,输入密码。用户名正确的情况下,密码连续输错三次,用户将被锁定,禁止登录系统

㈢ 如何用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+selenium自动化写登录脚本时,弹出的第三方登录页面该如何定位元素

importtime
defBai():
try:
browser=webdriver.Chrome()
browser.get(url)
wait=WebDriverWait(browser,10)
#定位网络登陆按钮
browser.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
time.sleep(5)
#qq登陆
browser.find_element_by_xpath('//*[@id="pass_phoenix_btn"]/ul/li[1]/a').click()
#切换至qq登陆窗口
time.sleep(5)
browser.switch_to.window(browser.window_handles[1])
#切换至账户密码框
browser.switch_to.frame('ptlogin_iframe')
#账户登陆按钮
browser.find_element_by_xpath('//*[@id="switcher_plogin"]').click()

user=browser.find_element_by_id('u')
user.send_keys(账户)

password=browser.find_element_by_id('p')
password.send_keys(密码)
browser.find_element_by_id('login_button').click()
browser.switch_to.window(browser.window_handles[0])

finally:
browser.close()
Bai()

㈤ 怎么用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怎么设置button按钮

生活中我们会遇到各种各样的登录界面,比如在登陆QQ时将账号和密码输入完备后,需要点击“登录”才能进入到自己的QQ页面。在Python中,这里的“登录”就是用Button组件制作的一个按钮。

导入tkinter模块
from tkinter import*
定义函数,用于在shell页面回答按钮上面的问题
def answer(): print("你看我像靓仔吗?")
创建根窗口
root=Tk()
创建Button组件
button=Button(root,text="你是靓仔吗",command=answer)#创建变量用于存放Button以及Button中的参数,root为根窗口,text为按钮上的文本内容,command=answer的作用是将按钮与函数绑定在一起
在根窗口中展示Button组件
button.pack()
让根窗口持续展示
root.mainloop()
完整代码
from tkinter import*def answer(): print("你看我像靓仔吗?")root=Tk()button=Button(root,text="你是靓仔吗",command=answer)button.pack()root.mainloop()
成果展示

使用Python中的Button组件制作按钮,就分享到这里!

热点内容
sql倒序查询 发布:2025-02-04 06:49:18 浏览:192
r7000p2021买哪个配置 发布:2025-02-04 06:40:17 浏览:965
如何消除微信小程序缓存 发布:2025-02-04 06:34:24 浏览:633
python27mysqldb 发布:2025-02-04 06:28:44 浏览:768
svn文件夹权限 发布:2025-02-04 06:23:47 浏览:902
师编程 发布:2025-02-04 06:22:51 浏览:170
加密类型wpa 发布:2025-02-04 06:21:27 浏览:178
互联网与云服务器 发布:2025-02-04 06:15:56 浏览:254
硬盘挖矿源码 发布:2025-02-04 06:15:45 浏览:76
宝马3系哪个配置合适 发布:2025-02-04 06:03:10 浏览:328