كيف بدأ كل شيء ...
2 فبراير ، صادفت مقالة مثيرة للاهتمام:
إغلاق واجهة برمجة التطبيقات للرسائل . فكرتي الأولى كانت: "لعنة ، كيف الآن للقضاء على الناس ، هاه؟" ولكن بعد ذلك تساءلت: من المحتمل أن تتوقف روبوتتي على المدى الطويل عن العمل ، وبشكل عام ، هذا ليس جيدًا ...
لكن في 15 فبراير ، كان المعهد لا يزال يعمل ، واعتقدت أن VK وعدت به مرة أخرى ولم تحققه (على سبيل المثال ، نقله إلى شركة عامة).
ولكن في 20 شباط (فبراير) ، عند تلقي رمز مميز عبر مكتبة
vk_api في python ، بدأ خطأ في الظهور وهو أن التطبيق لا يستطيع الوصول إلى الرسائل.
ثم فكرت ...
لم أرغب حقًا في تقليص روبوتات الدردشة على longfield وبدأت في البحث عن حلول.
كيف تكون
أسهل طريقة هي إطاعة الروبوت وتعطيله ، لكنني ما زلت متسللًا)
أولاً ، اتضح أن الرموز التي تم استلامها
قبل إغلاق api لا تزال لديها إمكانية الوصول إلى الرسائل.
ثانياً ، استخدم api
من هنا : بمعنى ، قم بتسجيل الدخول إلى VK باستخدام ملفات تعريف الارتباط وإرسال الطلبات اللاحقة
هنا مع المعلمات التالية تقريبًا:
المعلماتالتصرف: a_run_method
al: 1
التجزئة: التجزئة التي تم الحصول عليها من الصفحة
الطريقة: messages.getConversations
param_count: 20
param_extended: 0
param_filter: الكل
param_offset: 0
param_v: 5.92
رمز لتلقي الرسائل في بيثون:
قانونimport requests,lxml.html,re,json class invalid_password(Exception): def __init__(self, value):self.value = value def __str__(self):return repr(self.value) class not_valid_method(Exception): def __init__(self, value):self.value = value def __str__(self):return repr(self.value) class messages(object): def __init__(this,login,password): this.login = login this.password = password this.hashes = {} this.auth() def auth(this): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language':'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Accept-Encoding':'gzip, deflate', 'Connection':'keep-alive', 'DNT':'1'} this.session = requests.session() data = this.session.get('https://vk.com/', headers=headers) page = lxml.html.fromstring(data.content) form = page.forms[0] form.fields['email'] = this.login form.fields['pass'] = this.password response = this.session.post(form.action, data=form.form_values()) if "onLoginDone" not in response.text: raise invalid_password(" !") return def method(this,method,v=5.87,**params): if method not in this.hashes: this._get_hash(method) data = {'act': 'a_run_method','al': 1, 'hash': this.hashes[method], 'method': method, 'param_v':v} for i in params: data["param_"+i] = params[i] answer = this.session.post('https://vk.com/dev',data=data) return json.loads(re.findall("<!>(\{.+)",answer.text)[-1]) def _get_hash(this,method): html = this.session.get('https://vk.com/dev/'+method) hash_0 = re.findall('onclick="Dev.methodRun\(\'(.+?)\', this\);',html.text) if len(hash_0)==0: raise not_valid_method("method is not valid") this.hashes[method] = hash_0[0]
مثال للاستخدام:
a = messages('login','password') messages_user = a.method("messages.getConversations",count=1)
سكرتير خاص من يهتم ، وهنا بلدي السير:
1 )
الروبوت لتحميل الموسيقى من VK2 )
بوت تحديد هوية أي ملصق VKPPS مؤلف هذه المقالة لا يتحمل أي مسؤولية عن النص بأكمله المكتوب أعلاه: تم إنشاء المقالة أعلاه
فقط لأغراض معرفية.