упрощаем себе разработку с помощью postman
всем привки, я - kemen, python-dev, хочу поделиться с вами, как можно значительно ускорить и облегчить себе разработку софта для автоматизации сайта.
postman - с первого взгляда, недооцененная тулза, очень удобная для работы с api.
- отправлять запросы и получать ответы;
- сохранять запросы в папки и коллекции;
- делиться коллекциями ваших запросов и наборов тестов с коллегами;
- выполнять автотесты, в том числе по расписанию;
- изменять параметры запросов;
- получать готовый код.
быстренько разберем и настроим себе интерфейс для работы.
- Собственно, рабочая область, в которой вы можете редактировать свой запрос:
- Основное меню;
- Боковая панель, в которой можно:
- cоздать коллекцию запросов (как бы разделить их и сгруппировать в отдельные файлы);
- создавать новые окружения с индивидуальными настройками;
- Выбор типа запроса и сам URL.
Возьмем для примера сайтик - Tabi.
Создаем себе папочку, вместо New Collection - tabi.
а теперь самый сок, залетаем на страницу tabi.lol, открываем консольку разработчика
во вкладке Network видим все запросики
подключаем кошелек и видим, что появился запрос login, он то, нам и нужен
копируем его, как cURL
теперь залетаем в postman и вставляем наш запрос
теперь можем отправить его и проанализировать данные, которые нам требуются для выполнения успешной авторизации
уже очень удобно, но на этом не останавливаемся, открываем code
выбираем нужный нам язык - в моем случае Python
получаем уже почти готовый код!!!
проведя анализ, понимаем, что нам нужно генерировать сигнатуру самим:
async def get_signature(self):
# генерируем user-agent
ua = self.new_ua()
now = datetime.now()
timestamp = int(datetime.timestamp(now))
message = (
f"Hi! Welcome to Tabi."
f"\n\nPlease sign the message to let us know that you own the wallet."
f"\n\nSigning is gas-less and will not give Tabi permission to conduct"
f" any transactions with your wallet."
f"\n\nTime stamp is {timestamp}.")
while True:
try:
msg = encode_defunct(text=message)
sign = self.w3.eth.account.sign_message(msg, self.privatekey)
signature = self.w3.to_hex(sign.signature)
json_data = {
'publicKey': self.address,
'signedMessage': signature,
}
return signature, ua, timestamp
except Exception as er:
logger.error(f'{self.address}: - {er}')
await asyncio.sleep(5)так, написали функцию для получения сигнатуры, теперь можем написать саму функцию для авторизации:
async def login(self):
signature, ua, timestamp = await self.get_signature()
headers = {
'authority': 'api.tabi.lol',
'accept': 'application/json, text/plain, */*',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/json',
'origin': 'https://tabi.lol',
'referer': 'https://tabi.lol',
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': ua,
}
json_data = {
'chain_id': 56,
'wallet_address': self.address.lower(),
'signature': signature[2:],
'timestamp': timestamp
}
while True:
try:
async with aiohttp.ClientSession() as session:
async with session.post('https://api.tabi.lol/v3/login',
json=json_data, headers=headers, proxy=self.proxy) as response:
if response.status == 200:
token = (json.loads(await response.text()))['data']['access_token']
headers['authorization'] = f'Bearer {token}'
return headers, ua
except Exception as er:
logger.error(f'{self.address}: - {er}')
await asyncio.sleep(5)вот, ребятки, вы научились с помощью postman'a писать запросики к сайту!
я советую собирать все нужные запросы в папку, в postman'e, а уже после писать весь код.
надеюсь, теперь вы значительно быстрее будете писать код!
всех обнял, лфг, больше контента - https://t.me/kemencryptocode