세이브
게시글 주소: 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 답글 달기 신고 -
-
숭실대학교 5 3
전화 한번 부탁한다. 진심으로 하는 말이야. 나 장난 아니야 지금
-
북 2 0
장구
-
오늘 전화추합 받았는데
-
일어 할줄 아는거라곤 인사 정도랑 뭐 그런거 정도 하고 한자는 이름이랑 요일 한자로...
-
인강 무슨 쌤 들으시나요??
-
지피티가 샤워 싫어하는 사람은 4 0
연구자 기질이라던데 ㄹㅇ이가..
-
외대 6차합격자 발표 2 0
전화로 추합됐는데 합격자 발표창은 언제뜨나요?
-
씨발 붙었다.. 3 3
20분에 전화 전화와서 붙었어요 인하대 사회과학융합 빠져요 ㅜ
-
외모로 친구사귀는거 고치고싶다 3 0
남자는 외모어떻든 다 친하게지내려고하는데 여자는 진짜 훈녀이상아니면 거리두는것같아...
-
전적대 자퇴 2 0
광운대 붙었다고 좋아하던게 엊그제 같은데 ㅜㅜㅜㅜ 잘있어 팡운대..
-
궁금
-
과기대 아주대 4 1
과기대 전기정보 등록 포기하고 아주대 자전 가는거 괜찮은 선택이죠? 전자공 갈거에요
-
국어만고트 2 1
성대 진짜 젤 마지막으로 붙은거같은데 ㅊㅊ
-
과탐 2 0
두과목 다 백분위 80 초중이면 사탐런이 맞나 고려할 건 3년동안 한게 이거란 소리임
-
올해 고반 어케됨 2 0
줏어왓는데 이건 뭐노
-
동국대 지금 예비 7번이면 4 0
가망 없는거죠 37명 뽑는과인데
-
자퇴 4 0
언제해야되죠... 오늘 추합됐는데 그럼 3월 전까지만 하면 되나여
-
난 추합 넣었으면 디질 뻔햇네 4 0
남의 추합 기다리는 것도 떨리는데 내꺼였으면 지금쯤 CPR 받고 있었을듯
-
오늘 공부 너무 안 되길래 우울해서 초등학교 학교생활통지표 구경하다 중학교 거치고...
-
전에 등록했던 대학 취소못함? 기간6시까지던데 어케해ㅅㅂ