Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » XMPPPY - простой пример не работает со вКонтактом [RSS Feed]

#1 Авг. 3, 2010 18:44:06

Nuclear_Carlson
От:
Зарегистрирован: 2010-01-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

XMPPPY - простой пример не работает со вКонтактом

# -*- coding: utf-8 -*-
import sys, os, xmpp, time

#id2084081@vk.com

#id82136693@vk.com


tojid="MegaAccount@jabber.ru"
text="MegaMegaMegaMega"

jidparams={"jid":"МОЙ_АККАУНТ@jabber.ru", "password":"qweasdzxc"}

jid=xmpp.protocol.JID(jidparams['jid'])
cl=xmpp.Client(jid.getDomain(),debug=[])

con=cl.connect()
if not con:
print 'could not connect!'
sys.exit()
print 'connected with',con
auth=cl.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
if not auth:
print 'could not authenticate!'
sys.exit()
print 'authenticated using',auth

#cl.SendInitPresence(requestRoster=0) # you may need to uncomment this for old server
id=cl.send(xmpp.protocol.Message(tojid,text))
print 'sent message with id',id

time.sleep(1) # some older servers will not send the message if you disconnect immediately after sending

#cl.disconnect()
Это - работает. Однако, если я сменю жидов на id#####@vk.com и id$$$$$$$$@vk.com, то всё рушится.

Говорит такую вещь:

C:\Python26\lib\site-packages\xmpp\auth.py:24: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha,base64,random,dispatcher,re
C:\Python26\lib\site-packages\xmpp\auth.py:26: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
C:\Python26\lib\site-packages\xmpp\transports.py:305: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead.
tcpsock._sslObj = socket.ssl(tcpsock._sock, None, None)
connected with tls
Traceback (most recent call last):
File “C:\Documents and Settings\&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;\workspace\Spammer\src\main.py”, line 22, in <module>
auth=cl.auth(jid.getNode(),jidparams,resource=jid.getResource())
File “C:\Python26\lib\site-packages\xmpp\client.py”, line 224, in auth
if self.Bind.Bind(resource):
File “C:\Python26\lib\site-packages\xmpp\auth.py”, line 247, in Bind
jid=JID(resp.getTag('bind').getTagData('jid'))
File “C:\Python26\lib\site-packages\xmpp\protocol.py”, line 233, in __init__
if not jid and not domain: raise ValueError('JID must contain at least domain name')
ValueError: JID must contain at least domain name



Что же мне делать и как же мне быть?



Отредактировано (Авг. 3, 2010 18:45:09)

Офлайн

#2 Авг. 3, 2010 21:41:22

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

XMPPPY - простой пример не работает со вКонтактом

Судя по всему vk.com как-то нестандартно понимает xmpp. Если при биндинге не передать ресурс, то он не возвращает jid, хотя вроде должен. Он возвращает вместо этого ресурс и все ломается.
Для начала попробуйте перед вызовом cl.auth просто установить ресурс руками, вот так: jid.setResource('test')

Если этого будет недостаточно, то есть еще вариант, что серверу нужно подсунуть тот ресурс, который он послал при биндинге без ресурса, то есть биндить в 2 этапа. Но для этого нужно уже патчить xmpp. Я проверить не могу, поскольку аккаунта vk.com у меня нет. Проверяйте, если не будет работать - покажу как пропатчить xmpp.



Офлайн

#3 Авг. 4, 2010 12:25:09

Nuclear_Carlson
От:
Зарегистрирован: 2010-01-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

XMPPPY - простой пример не работает со вКонтактом

Я выставил ресурс. Теперь сообщение таки отправляется. Но, тем не менее, не получается.



Офлайн

  • Начало
  • » Network
  • » XMPPPY - простой пример не работает со вКонтактом[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version