세이브
게시글 주소: https://orbi.kr/00075398714
import asyncio
import aiohttp
import urllib.parse
import logging
from typing import Dict, Any
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
logger = logging.getLogger(__name__)
USERNAME = ''
PASSWORD = ''
URL_TARGET = 'https://orbi.kr/amusement/lottery/buy_ticket'
URL_LOGIN = 'https://login.orbi.kr/login'
BATCH_SIZE = 30
WAIT_AFTER_BATCH_SEC = 70
LOGIN_REDIRECT_URL = 'https://orbi.kr/amusement/lottery'
batching_enabled = True
batch_counter = 0
global_session: aiohttp.ClientSession = None
async def perform_login(session: aiohttp.ClientSession) -> bool:
logger.info("Attempting login...")
login_data = {
'url': LOGIN_REDIRECT_URL,
'username': USERNAME,
'password': PASSWORD,
}
headers = {
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': f'https://login.orbi.kr/login?url={urllib.parse.quote(LOGIN_REDIRECT_URL, safe="")}',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
}
try:
async with session.post(URL_LOGIN, data=login_data, headers=headers) as response:
logger.info(f"Login response status: {response.status}")
if response.status in [200, 302]:
logger.info("Login successful.")
return True
else:
logger.error(f"Login failed. Status code: {response.status}")
return False
except Exception as e:
logger.error(f"Error during login: {e}")
return False
async def delay_next_cycle(from_batch: int):
global batching_enabled
if not batching_enabled:
return
logger.info(f"[CYCLE {from_batch}] Waiting {WAIT_AFTER_BATCH_SEC} seconds...")
await asyncio.sleep(WAIT_AFTER_BATCH_SEC)
if not batching_enabled:
return
logger.info(f"[CYCLE {from_batch}] Wait complete. Continuing...")
async def send_batch(session: aiohttp.ClientSession):
global batch_counter
global batching_enabled
if not batching_enabled:
return
batch_counter += 1
this_batch = batch_counter
logger.info(f"\n[CYCLE {this_batch}] Sending {BATCH_SIZE} parallel requests.")
request_headers = {
'Accept': '*/*',
'Referer': 'https://orbi.kr/amusement/lottery',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
}
async def make_request(i):
try:
async with session.post(URL_TARGET, headers=request_headers, data={}) as resp:
return {'ok': resp.ok, 'status': resp.status}
except Exception as err:
return {'error': str(err)}
tasks = [make_request(i) for i in range(BATCH_SIZE)]
results = await asyncio.gather(*tasks, return_exceptions=False)
success_count = sum(1 for r in results if 'ok' in r and r['status'] == 200)
failed_count = sum(1 for r in results if 'error' in r or ('ok' in r and r['status'] != 200))
summary = {'Total': len(results), 'Success (200)': success_count, 'Failed/Error': failed_count}
logger.info(f"[CYCLE {this_batch}] Batch complete. Summary: {summary}")
await delay_next_cycle(this_batch)
async def main_execute():
global global_session
async with aiohttp.ClientSession() as session:
global_session = session
if not await perform_login(session):
logger.error("Login failed. Stopping routine.")
return
logger.info("Login successful. Starting loop.")
while batching_enabled:
await send_batch(session)
logger.info("Routine stopped by user command.")
if __name__ == "__main__":
try:
logger.info("sc/2 loaded. Starting routine.")
asyncio.run(main_execute())
except KeyboardInterrupt:
logger.info("Routine stopped by keyboard interrupt.")
except Exception as e:
logger.error(f"Unexpected error: {e}")
출처: 하량이
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
좋아요 1 답글 달기 신고 -
좋아요 1 답글 달기 신고 -
-
오랜만에 왔는데 기만 ㅈㄴ많아 6 3
네 대학 붙으신 거 다들 축하드리고요 나만 수능 ㅈ된 거얐지? 동지들인 줄 알았는데 ㅆㅂ겄!!!
-
좆됐냐 이거 진짜 진심으로 진지하게 정시 혹은 자살 생각해보고있음
-
대전대 한의예과 추합 2 0
지금 어디까지 돌았는지 아시는분 계신가요?
-
서강화학 1 0
서강화학 웰케 안도냐
-
시립대 신소재vs건대 전전 19 0
등록금 신경안쓰면 어디감?
-
체인소블러드 1 0
짜릿함
-
N티켓 다음 드릴 1 0
N티켓 시즌1 다했는데 드릴 ㄱㄱ해도 되나요? 뉴런 안들었음요
-
기분이 너무 안좋다 6 1
기분 좋아지게 뭐하는게 좋을까 날도 추운데..
-
비수기 뭐시기 한의대 붙었나 7 6
이제 글 안 쓰네
-
근데 그러면 2 0
영어 원어민들은 영어를 읽을 때 한글로 해석해서 안 읽는다는거임? rainbow를...
-
돌아보니 다들 대학 어지간히 갔네요 평균치가 엄청 높은 건 아니더라도 많이 못 간...
-
얼마만에 콰치와냐 2 0
극락이다
-
삼수생 국어커리 조언 해주실분...!!!!ㅠㅠ 제발도오ㅓ주새요 4 1
현역 국어5 (공부안함) 재수 국어4 ㅋㅋ... ( 정석민 비독원베이스 >강기분>...
-
맨날 기출이나 n제 해설지 퀄 떨어지는 거 보면 존나 찡찡댔는데 막상 직접 쓰는...
-
있음?
-
보통 연대 문과나오면 시급 2 3
얼마 받나요? 4만원 되나요?
-
나의 안 좋은 버릇 2 2
인물관계 파악 안 하고 대충 넘기기 옛날에 웹툰 한주에 150개씩 볼 때 생긴...
-
이번에 편입으로 두 학교를 붙게 됐는데 여러분이라면 두 군데 중 어디를 가실 것...
-
근데 생윤 공부량 3 0
사회탐구중에서 만점 목표로 한다고 했을때는 양 제일 많지 않나요? 문제풀이가 있는...
-
고1 6모 고정까진 아닌데 거의 만점 제일 빨리 한 건 60분에 만점받기도 했었음...