Batasi Pesan API VK - apa yang harus dilakukan

Bagaimana semuanya dimulai ...


2 Februari, saya menemukan artikel yang menarik: menutup api untuk pesan . Pikiran pertamaku adalah: "Sial, bagaimana sekarang bisa menjebak orang, ya?" Tapi kemudian saya bertanya-tanya: mungkin bot saya di longfield akan berhenti bekerja, dan secara umum, itu tidak keren ...

Tetapi pada tanggal 15 Februari, api masih menyala, dan saya pikir VK sekali lagi berjanji dan tidak memenuhinya (misalnya, sebagai pemindahan ke perusahaan publik).

Tetapi pada 20 Februari, ketika menerima token melalui pustaka vk_api dengan python, muncul kesalahan bahwa aplikasi tidak memiliki akses ke pesan.

Dan kemudian saya berpikir ...

Saya benar-benar tidak ingin mengurangi bot obrolan saya di longfield dan saya mulai mencari solusi.

Bagaimana menjadi


Cara termudah adalah mematuhi dan menonaktifkan bot, tapi saya masih seorang hacker)

Pertama, ternyata token yang diterima SEBELUM menutup api masih memiliki akses ke pesan.

Kedua, gunakan api dari sini : yaitu, masuk ke VK dengan cookie dan kirim permintaan-posting di sini dengan kira-kira parameter berikut:

Parameter
act: a_run_method
al: 1
hash: hash didapat dari halaman
metode: messages.get Konversi
param_count: 20
param_extended: 0
param_filter: semua
param_offset: 0
param_v: 5.92


Kode untuk menerima pesan dengan python:

Kode
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] 


Contoh penggunaan:

 a = messages('login','password') messages_user = a.method("messages.getConversations",count=1) 

PS Siapa yang peduli, ini bot saya:

1 ) bot untuk mengunduh musik dari VK
2 ) bot mengidentifikasi id dari setiap stiker VK

PPS Penulis artikel ini tidak memikul tanggung jawab untuk seluruh teks yang ditulis di atas: artikel di atas dibuat HANYA dengan tujuan kognitif.

Source: https://habr.com/ru/post/id446172/


All Articles