├── proxy.txt ├── README.md ├── config.json └── dawn.py /proxy.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dawn 2 | Dawn Internet Extension 3 | Keep Alive Connection 4 | edit config.json, use your own app id, email and token. 5 | 6 | python dawn.py 7 | or 8 | python3 dawn.py 9 | 10 | use my refferal code: doavda 11 | 12 | extension: https://chromewebstore.google.com/detail/dawn-validator-chrome-ext/fpdkjdnhkakefebpekbdhillbhonfjjp?hl=en 13 | 14 | how to get token, app id, email? 15 | use Developer Tools (f12) - Network - filter Fetch/XHR 16 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "AppID": "675baf98088a1184720eb7d4", 4 | "Email": "gilanx8tz@gmail.com", 5 | "Token": "2056b72d0eb33beb2a6d2d39c67296afa677fc1f271efaf0d84b5d50cd08aee410c07f2f8a6510b58ab067551517964a9b712a207a15ea4f311b2b0364b0fd4ba5281e3aa2c76c3732950e99ad2fa7baa152e015785c7183cdf0f1c2749fb8488a66918e28717880a33f82ad0289f1302955897f6bfd28bc5c136adfa4e7a98fe0741167cc777121d2d23bb1d0cd2ef744e963592d582ce2bbe5facdebd259b6f430f64d8259bc3cf72c2562959507658122b5b90bb11ea7a220fc4eff459f31f4f47ea41dc403fbdfad49fdae7f351216440f39e31157ebe266158959a78f4b2f3f2c4f67b934a7a8846042952ca2df5" 6 | }, 7 | { 8 | "AppID": "675bad7e068587cb7e6c72c1", 9 | "Email": "ieiwuuw@gmail.com", 10 | "Token": "2056b72d0eb33beb2a6d2d39c67296afa677fc1f271efaf0d84b5d50cd08aee410c07f2f8a6510b58ab067551517964a9b712a207a15ea4f311b2b0364b0fd4b35c42d0af122eb6257d0af3dfb5dec7d7f705893e52b96805afaedeb496f8a4be8e6784bb45c832431bb5a99f49011d9a103b0abd09260a0d5810a1b9bd135f4a24098d43063012965bd24edbd1601096a9fa88648cdf982d35c46fc9f1d5d44c2b3060f08c5a6724d72aa4d1bd2756361c3fef3a4361796d936f067622b4996f4471205f08afe6eadfbd893a6a0856dffee256a9dfcd26ad61ca2d0e7849c5745c99d7ad54e731e9f941feddd9da7838" 11 | }, 12 | { 13 | "AppID": "675b9a001b11c537dfe34b4b", 14 | "Email": "adelia89551@gmail.com", 15 | "Token": "2056b72d0eb33beb2a6d2d39c67296afa677fc1f271efaf0d84b5d50cd08aee410c07f2f8a6510b58ab067551517964a9b712a207a15ea4f311b2b0364b0fd4bf68db4da49d4c555dc8af72df0506b0f343c6b2482f0a0986297ef98f2127d90cc4977a4423ccc47ddf8c72be65d20be2a10537da20303e4271eb25dd40030c8e9ac02b0a8d66301159c312ec06e154d3605579c61a537a9fec1f0d1c33238e726714a1b71a942728983c1664238de8f652f37df535ec4f6280dd82bea397d6517b82a09bb332d317c3b789289cdf5e8520b6ecc8582f6753f0c5dcdaceae554a79be34e54d93dbe10e2a3f10434d066b" 16 | }, 17 | { 18 | "AppID": "675b9a791b11c537dfe34b4b", 19 | "Email": "mbah8284@gmail.com", 20 | "Token": "2056b72d0eb33beb2a6d2d39c67296afa677fc1f271efaf0d84b5d50cd08aee410c07f2f8a6510b58ab067551517964a9b712a207a15ea4f311b2b0364b0fd4ba2a31dc302ce0f80125b120fd1cfe69a497f1b060798534dcaa6ce44c8692bd2f6c1448e929f3bfe93952fcf3ff39b03054af80f7cf3518918c1b398ecd2dd6de61a53f6c14296238710983791c4e487b0c7d3f8f6ef0b8cbf076af41b6d7c83079b331281d6ca5713c412156bd62b619665513be47e44be5cdec43e0feac1d421efbe406fedd20a61e1ce995d8eea76d0af73e07528bb81fcec313395a1c0f63680bcfddde2379fe58c74f5e3a420738" 21 | }, 22 | { 23 | "AppID": "675b9c091b11c537dfe34b4b", 24 | "Email": "dotcomjsske@gmail.com", 25 | "Token": "2056b72d0eb33beb2a6d2d39c67296afa677fc1f271efaf0d84b5d50cd08aee410c07f2f8a6510b58ab067551517964a9b712a207a15ea4f311b2b0364b0fd4b96dcf49527a1354accbf54960420998a3a3cc701e76064170b26e3e482999d6cff5da95078bf098c864a1c15dbfd7cbbd67feeeda8da8d5fa158882bdfcbb5764cb33445955e7e03ecf053627fa03f705d8c8b0b001ce88b4743280e45e478c932b96419dcf2b676c927fbd339557ead82a87dda618e48ae850017996cee0b65692f9b0d0680ecd077ca04ab8d0df780deafc499f2f0462d92a58af56dc4e031db82331090d8580b58b35209f6112490c" 26 | } 27 | ] 28 | -------------------------------------------------------------------------------- /dawn.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | import aiohttp 4 | from loguru import logger 5 | import random 6 | 7 | # credits to dwisyafriadi/dawn 8 | async def send_keepalive_request(appid, bearer_token, username, extension_id, number_of_tabs, proxy=None): 9 | url = f"https://www.aeropres.in/chromeapi/dawn/v1/userreward/keepalive?appid={appid}" 10 | headers = { 11 | "Authorization": f"Bearer {bearer_token}", 12 | "Content-Type": "application/json", 13 | "Accept": "*/*", 14 | "Accept-Encoding": "gzip, deflate, br, zstd", 15 | "Accept-Language": "id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7", 16 | "Origin": f"chrome-extension://{extension_id}", 17 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36", 18 | "Sec-Fetch-Dest": "empty", 19 | "Sec-Fetch-Mode": "cors", 20 | "Sec-Fetch-Site": "cross-site", 21 | } 22 | payload = { 23 | "username": username, 24 | "extensionid": extension_id, 25 | "numberoftabs": number_of_tabs, 26 | "_v": "1.0.9" 27 | } 28 | connector = aiohttp.TCPConnector(ssl=False) if proxy else None 29 | proxy_url = proxy if proxy and (proxy.startswith('http://') or proxy.startswith('https://')) else f"http://{proxy}" if proxy else None 30 | async with aiohttp.ClientSession(connector=connector) as session: 31 | try: 32 | async with session.post(url, headers=headers, json=payload, proxy=proxy_url) as response: 33 | response_data = await response.json() 34 | logger.info(f"Response: {response_data}") 35 | return response_data 36 | except Exception as e: 37 | logger.error(f"Error occurred: {e}") 38 | return None 39 | 40 | async def read_proxies_from_file(file_path): 41 | try: 42 | with open(file_path, 'r') as file: 43 | return [line.strip() for line in file if line.strip()] 44 | except FileNotFoundError: 45 | logger.error("Proxy file not found.") 46 | return [] 47 | 48 | async def execute_account(account, proxies, extension_id, number_of_tabs): 49 | proxy = random.choice(proxies) if proxies else None 50 | logger.info(f"Using proxy: {proxy}") 51 | response = await send_keepalive_request( 52 | account["AppID"], account["Token"], account["Email"], extension_id, number_of_tabs, proxy 53 | ) 54 | if response: 55 | logger.info(f"Keep alive successful for {account['Email']}") 56 | return True 57 | else: 58 | logger.error(f"Keep alive failed for {account['Email']}") 59 | return False 60 | 61 | async def main(): 62 | with open("config.json", "r") as config_file: 63 | accounts = json.load(config_file) 64 | proxies = await read_proxies_from_file("proxy.txt") 65 | extension_id = "fpdkjdnhkakefebpekbdhillbhonfjjp" 66 | number_of_tabs = 0 67 | while True: 68 | for account in accounts: 69 | success = await execute_account(account, proxies, extension_id, number_of_tabs) 70 | if not success: 71 | logger.info(f"Moving to the next account after failure: {account['Email']}") 72 | logger.info("All accounts processed. Restarting after 180 seconds.") 73 | await asyncio.sleep(180) 74 | 75 | if __name__ == '__main__': 76 | asyncio.run(main()) 77 | --------------------------------------------------------------------------------