рд╕рдВрджреЗрд╢ рд╕рдВрджреЗрд╢ рдПрдкреАрдЖрдИ рд╡реАрдХреЗ - рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ ...


2 рдлрд░рд╡рд░реА, рдореБрдЭреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдЖрдпрд╛: рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреА рдХреЛ рдмрдВрдж рдХрд░рдирд╛ ред рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛: "рдЕрд░реЗ, рдЕрдм рд▓реЛрдЧреЛрдВ рдкрд░ рдирдХреЗрд▓ рдХрд╕рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реБрд╣?" рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛: рд╢рд╛рдпрдж longfield рдкрд░ рдореЗрд░реЗ рдмреЙрдЯ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ ...

рд▓реЗрдХрд┐рди 15 рдлрд░рд╡рд░реА рдХреЛ, рдПрдкреАрдЖрдИ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╡реАрдХреЗ рдиреЗ рдлрд┐рд░ рд╕реЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдВрдкрдиреА рдореЗрдВ рдЗрд╕рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ)ред

рд▓реЗрдХрд┐рди 20 рдлрд░рд╡рд░реА рдХреЛ, рдЕрдЬрдЧрд░ рдореЗрдВ vk_api рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рддреНрд░реБрдЯрд┐ рдкреЙрдк рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реБрдИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред

рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ ...

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдиреНрдЧрдлрд╝реАрд▓реНрдб рдкрд░ рдЕрдкрдиреЗ рдЪреИрдЯ рдмреЙрдЯреНрд╕ рдореЗрдВ рдХрдЯреМрддреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреА рдереАред

рдХреИрд╕реЗ рд╣реЛ?


рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмреЙрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЙрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рд╣реИрдХрд░ рд╣реВрдВ)

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдПрдкрд┐ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдЕрднреА рднреА рд╕рдВрджреЗрд╢реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред

рджреВрд╕рд░реЗ, рдпрд╣рд╛рдВ рд╕реЗ рдПрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : рдЕрд░реНрдерд╛рдд, рдХреБрдХреАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╡реАрдХреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ-рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ:

рдорд╛рдкрджрдВрдбреЛрдВ
рдЕрдзрд┐рдирд┐рдпрдо: a_run_method
рдЕрд▓: рез
рд╣реИрд╢: рд╣реИрд╢ рдкреГрд╖реНрда рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА
рд╡рд┐рдзрд┐: рд╕рдВрджреЗрд╢
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) 

PS рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдореЗрд░реЗ рдмреЙрдЯреНрд╕ рд╣реИрдВ:

1 ) рд╡реАрдХреЗ рд╕реЗ рд╕рдВрдЧреАрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ
2 ) рдХрд┐рд╕реА рднреА рд╡реАрдХреЗ рд╕реНрдЯрд┐рдХрд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреЙрдЯ

PPS рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдКрдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рдкреВрд░реЗ рдкрд╛рда рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ: рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓реЗрдЦ рдХреЗрд╡рд▓ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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


All Articles