aura-api
Python API Π΄Π»Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΡΡΠ°
Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Python 3, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π½Π° Python 3.7
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip
pip3 install aura-api
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²
git clone https://github.com/mickxolotl/aura-api.git
cd aura-api
python3 setup.py install
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ examples
import aura
api = aura.API(aura.AuthSession('LOGIN', 'PASSWORD'))
ΠΠ°ΠΌΠ΅Π½ΠΈΠ² ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ²ΠΎΠΈ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΠΠ Π°ΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ /api/user/interests/
ΠΈΠ»ΠΈ /api/post/info/<post_id>/
Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ
api.user.interests()
# ΠΈ
api.post.info[post_id]()
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ
api.post.edit[post_id](text='ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ', background=19)
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
- "OK" ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ;
- id ΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ;
- ΠΎΠ±ΡΠ΅ΠΊΡ
Dummy
ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ .
Π Π°Π±ΠΎΡΠ°ΡΡ Ρ Dummy
ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
obj.text
obj['text']
obj.get('text', 'DEFAULT')
if 'text' in obj: pass
# Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 'text' Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅
ΠΡΠ°Π½ΡΡ
ΠΠ΅ΡΠΎΠ΄ HTTP Π·Π°ΠΏΡΠΎΡΠ°
ΠΠ»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ HTTP ΠΌΠ΅ΡΠΎΠ΄ GET
, Π° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ POST
.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° API Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ HTTP ΠΌΠ΅ΡΠΎΠ΄.
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ,
Π° Π² Π»ΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Invalid HTTP method...
Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:
api.some.method('GET')
# ΠΈΠ»ΠΈ
api.some.method(_http_method='GET')
Π‘ΠΏΠΎΡΠΎΠ± Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° AuthSession
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ²
Π½Π° passport.yandex.ru
Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΡΡΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΠΎΠ²Π»Π΅ΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° Π°ΠΊΠΊΠ°ΡΠ½Ρ.
ΠΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CookieSession
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π²ΡΠ·Π²Π°Π² ΠΌΠ΅ΡΠΎΠ΄ get_cookie_session_args
ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° AuthSession
:
session = aura.AuthSession('LOGIN', 'PASSWORD')
cookies = session.get_cookie_session_args()
print(cookies) # ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
cookie_session = aura.CookieSession(**cookies)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ aura.config.config
ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ aura.configure
Π΄ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
aura.config.config.USER_AGENT = 'Mozilla/5.0 ...'
aura.configure(USER_AGENT='Mozilla/5.0 ...', API_DELAY=0)
- USER_AGENT - ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ USER_AGENT ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ
- DEFAULT_APP_VERSION - ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ Π²Π΅ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- HTTP_TIMEOUT - Π»ΠΈΠΌΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°
- API_DELAY - Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ
- HTTP_METHOD_CORRECTION - ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ Invalid action ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ HTTP ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ°Π·Π°Π½ Π²ΡΡΡΠ½ΡΡ
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ Π½Π΅Ρ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΄Π΅ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ (Π½ΠΎ ΠΎΡΠΎΠ±ΠΎ Π½Π° ΡΡΠΎ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π΅ ΡΡΠΎΠΈΡ).
ΠΠ·ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Ρ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ HTTP Π·Π°ΠΏΡΠΎΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ:
- ΠΠ°ΠΌΠ΅Π½ΡΡ USER AGENT Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π°ΡΡΠΎΠΉ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ "Network" ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (F12 Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ )
- ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π° Charles ΠΈΠ»ΠΈ Fiddler ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅
Π’Π°ΠΊ ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ΄ΠΈΡΡ ΡΡΠΎ-ΡΠΎ ΠΈΠ· main.js (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ USER AGENT)