Skip to content
This repository has been archived by the owner on Aug 23, 2020. It is now read-only.

Commit

Permalink
因腾讯关闭qun.qq.com接口,删除相关代码,所有联系人的真实QQ都无法获取
Browse files Browse the repository at this point in the history
  • Loading branch information
pandolia committed Jan 4, 2018
1 parent cf8b44c commit 91cbacf
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 51 deletions.
5 changes: 5 additions & 0 deletions changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2018-1-4 qqbot v2.3.8
1) 因腾讯关闭了 qun.qq.com 的接口,已无法获取到 好友/群/群成员 的真实 QQ ,故删除了相关的请求代码。
2) passwordlogin 插件中增加输入框 clear 的代码。
3) 二维码服务器监听 ip 改为 0.0.0.0 。

2017-11-1 qqbot v2.3.7
1) 修正miniirc插件的bug,感谢@ferocknew
2) 修正bot.isMe的bug
Expand Down
2 changes: 2 additions & 0 deletions qqbot/plugins/passwordlogin.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ def newLogin(self, conf):
wait = WebDriverWait(driver, 30)
driver.get('http://m.qzone.com')
wait.until(EC.presence_of_element_located((By.ID, "go")))
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys(qq)
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys(password)
driver.find_element_by_id('go').click()
wait.until(EC.element_to_be_clickable((By.ID, 'header')))
Expand Down
2 changes: 1 addition & 1 deletion qqbot/qconf.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
if p not in sys.path:
sys.path.insert(0, p)

version = 'v2.3.7'
version = 'v2.3.8'

sampleConfStr = '''
{
Expand Down
103 changes: 55 additions & 48 deletions qqbot/qcontactdb/fetch.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@ def fetchBuddyTable(self):
markDict = dict((str(d['uin']), str(d['markname']))
for d in result['marknames'])

qqResult = self.smartRequest(
url = 'http://qun.qq.com/cgi-bin/qun_mgr/get_friend_list',
data = {'bkn': self.bkn},
Referer = 'http://qun.qq.com/member.html'
)
# qqResult = self.smartRequest(
# url = 'http://qun.qq.com/cgi-bin/qun_mgr/get_friend_list',
# data = {'bkn': self.bkn},
# Referer = 'http://qun.qq.com/member.html'
# )

qqDict = collections.defaultdict(list)
for blist in list(qqResult.values()):
for d in blist.get('mems', []):
name = HTMLUnescape(d['name'])
qqDict[name].append(str(d['uin']))
# qqDict = collections.defaultdict(list)
# for blist in list(qqResult.values()):
# for d in blist.get('mems', []):
# name = HTMLUnescape(d['name'])
# qqDict[name].append(str(d['uin']))

buddies, unresolved = [], []

Expand All @@ -49,20 +49,23 @@ def fetchBuddyTable(self):
nick = str(info['nick'])
mark = markDict.get(uin, '')
name = mark or nick
qqlist = qqDict.get(name, [])
if len(qqlist) == 1:
qq = qqlist[0]
else:
qq = '#NULL'
unresolved.append('好友“%s”(uin=%s)' % (name, uin))
# qqlist = qqDict.get(name, [])
# if len(qqlist) == 1:
# qq = qqlist[0]
# else:
# qq = '#NULL'
# unresolved.append('好友“%s”(uin=%s)' % (name, uin))
qq = '#NULL'

# 各属性的顺序绝对不能变
buddies.append([qq, uin, nick, mark, name])


if unresolved:
unresolved.sort()
WARN('因存在重名或名称中含特殊字符,无法绑定以下好友的真实QQ号,请修改其备'
'注名,保证备注名的唯一性且不带特殊字符:\n\t%s', '\n\t'.join(unresolved))
# if unresolved:
# unresolved.sort()
# WARN('因存在重名或名称中含特殊字符,无法绑定以下好友的真实QQ号,请修改其备'
# '注名,保证备注名的唯一性且不带特殊字符:\n\t%s', '\n\t'.join(unresolved))
WARN('因腾讯关闭了 qun.qq.com 的接口,无法获取到好友的真实 QQ 号码!')

return buddies

Expand Down Expand Up @@ -103,11 +106,11 @@ def getManaulGroupQQDict():

def fetchGroupTable(self):

qqResult = self.smartRequest(
url = 'http://qun.qq.com/cgi-bin/qun_mgr/get_group_list',
data = {'bkn': self.bkn},
Referer = 'http://qun.qq.com/member.html'
)
# qqResult = self.smartRequest(
# url = 'http://qun.qq.com/cgi-bin/qun_mgr/get_group_list',
# data = {'bkn': self.bkn},
# Referer = 'http://qun.qq.com/member.html'
# )

result = self.smartRequest(
url = 'http://s.web2.qq.com/api/get_group_name_list_mask2',
Expand All @@ -123,12 +126,12 @@ def fetchGroupTable(self):
markDict = dict((str(d['uin']), str(d['markname'])) \
for d in result['gmarklist'])

qqDict = collections.defaultdict(list)
for k in ('create', 'manage', 'join'):
for d in qqResult.get(k, []):
qqDict[HTMLUnescape(d['gn'])].append(str(d['gc']))
# qqDict = collections.defaultdict(list)
# for k in ('create', 'manage', 'join'):
# for d in qqResult.get(k, []):
# qqDict[HTMLUnescape(d['gn'])].append(str(d['gc']))

qqDict2 = getManaulGroupQQDict()
# qqDict2 = getManaulGroupQQDict()

groups, unresolved = [], []
for info in result['gnamelist']:
Expand All @@ -143,23 +146,26 @@ def fetchGroupTable(self):

name = mark or nick

qqlist = qqDict.get(nick, [])
if len(qqlist) == 1:
qq = qqlist[0]
else:
qqlist = qqDict2.get(nick, [])
if len(qqlist) == 1:
qq = qqlist[0]
else:
qq = '#NULL'
unresolved.append('群“%s”(uin=%s)' % (name, uin))
# qqlist = qqDict.get(nick, [])
# if len(qqlist) == 1:
# qq = qqlist[0]
# else:
# qqlist = qqDict2.get(nick, [])
# if len(qqlist) == 1:
# qq = qqlist[0]
# else:
# qq = '#NULL'
# unresolved.append('群“%s”(uin=%s)' % (name, uin))
qq = '#NULL'

groups.append([qq, uin, nick, mark, name, gcode])

if unresolved:
unresolved.sort()
WARN('因存在重名或名称中含特殊字符,无法绑定以下'
'群的真实QQ号:\n\t%s', '\n\t'.join(unresolved))
# if unresolved:
# unresolved.sort()
# WARN('因存在重名或名称中含特殊字符,无法绑定以下'
# '群的真实QQ号:\n\t%s', '\n\t'.join(unresolved))

WARN('因腾讯关闭了 qun.qq.com 的接口,无法获取到群的真实 QQ 号码!')

return groups

Expand Down Expand Up @@ -246,10 +252,11 @@ def fetchGroupMemberTable(self, group):

membss.append(memb)

if unresolved:
unresolved.sort()
WARN('因存在重名或名称中含特殊字符,无法绑定 %s 中以下'
'成员的真实QQ号:\n\t%s', group, '\n\t'.join(unresolved))
# if unresolved:
# unresolved.sort()
# WARN('因存在重名或名称中含特殊字符,无法绑定 %s 中以下'
# '成员的真实QQ号:\n\t%s', group, '\n\t'.join(unresolved))
WARN('因腾讯关闭了 qun.qq.com 的接口,无法获取到群成员的真实 QQ 号码!')

return membss

Expand Down
2 changes: 1 addition & 1 deletion qqbot/qrcodeserver.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

class QrcodeServer(MySocketServer):
def __init__(self, ip, port, qrcodePath, qrcodeId):
MySocketServer.__init__(self, ip, port, '二维码 HTTP 服务器')
MySocketServer.__init__(self, '0.0.0.0', port, '二维码 HTTP 服务器')
self.qrcodePath = qrcodePath
self.qrcodeURL = 'http://%s:%s/%s' % (ip, port, qrcodeId)

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from setuptools import setup

version = 'v2.3.7'
version = 'v2.3.8'

setup(
name = 'qqbot',
Expand Down

0 comments on commit 91cbacf

Please sign in to comment.