세이브
게시글 주소: https://dev.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 답글 달기 신고 -
-
오늘은 학교 수업에서 강간에 대해 토론함
-
아이언을 넘는 래퍼가 없네 2 0
아으
-
16cm보다 큰사람만 댓글 달아주셈 22 4
기억해둘게요
-
Mt랑 알바랑 걉쳐요 사장님 2 1
말하면 하루 빼주실라나..
-
뉴진스 글쓰던사람 ㅇㄷ감 1 0
어원쓰던사람
-
작년대비 시즌1 얼마나 됬나요???
-
국수영 원점수 합 262 15 2
근데조금이상함
-
이거 좀 들어주셈 8 0
소원임 가사도 개조음
-
원래 개학하고 3 0
국어만 파려고 했는데 날 보니까 수학-> 개병신 물2-> 개병신 지1->완전 병신...
-
순공평균3분의사나이 5 2
-
쌉허수의 2503 물1 평가 9 1
굉장굉장히 아쉬운거시 3떴다는거심 화학 왤케 등급컷이 박았냐ㅑ 나중에 해볼께 7...
-
이등변삼각형이나오면 4 0
반으로나누자
-
씨빨 0 1
내일학교가네
-
잠깐만지금수학을풀기시작하면 4 1
12시45분에끝나네 습박습박~
-
4시간휴릅 1 0
스고이
-
파는 갖고 있지 않지만 가능하다면 있었으면 해
-
과외하다보니 느낀건데 0 0
미적분 수2 수1은 잘하는것같은데 뭔가 막히는 문제보면 고1수학이 부족해서 생긴문제들이 많음
-
약간 힙시하다 2 0
약간 legacy가 잇는 그거야
-
서프 정답률 국어 0 0
비재원생이면 정답률 알 수 있는 방법 없을까요? 국어 과목 정답률이 궁금하네요 풀기...
-
중계가 뭐임 2 1
플레이에다가 중계한다는게
-
살려주세요 1 0
심찬우 생글생감 + 마닳 어떤가요?근데 26수능 칸트 같은 거는 이해의 영역이...
-
혹랄하다 0 0
방금 내가 만든 단어임 먼 의미인진 몰름
-
오늘 공부 ㅁㅌㅊ 5 2
수학 n제 15~20문제(허들링) 수학 실모 1개(덮) 과탐 실모 1개씩(덮) 지1...
-
아 이거 개웃기네 ㅋㅋㅋ 13 5
ㅋㅋㅋㅋㅋㅋㅋ
-
챔스 오늘 승부 예측 0 0
뉴케슬 승리로 8강 리버풀 승리로 8강 뮌헨 승 알레띠 승
-
너를 생각하고있어 일본어로 3 0
뭐임뇨??어디선가 들어봣는데 아나타오 캉가에테 말고 다른거
-
인생망했네 0 1
에휴시발
-
이개다 한지 2강 수강완 2 1
아주 좋아용
-
쎈 언재쯤 재입고 될까요? 3 0
지금 수1 품절됬는데 언재쯤 재입고 되나요?
-
영어 공부 막막하... 1 0
영어 제일 약한 과목이라 어떻게 공부해야할지 감이 안잡혀요,.ㅜ 현역때 크게...
-
수열 ㅈㄴ 싫음 4 3
수열 251122식 노가다 문제가 n제에 나올때마다 문제집을 불태우고 싶음
-
양승진 수코 vs 김범준 스블 0 0
재수생 작수 미적 3등급 입니다. 스블 문제들도 어렵다고 해서 기출 문제 풀려고...
-
개념양 동사 한지 3 0
뭐가 더 많음?
-
대학 그냥 다니면서 한번 봐볼까 하는데 독학으로 공부할만한 교재같은거 추천해줄수...
-
좋은 강사는 많은데 0 2
걍 시간은 없고
-
생윤 잘생긴 개념 후 잘노기 0 0
올해 생윤 처음 하는 현역입니다. 이번주에 김종익T 생윤 개념강의 완강할거같은데,...
-
수학 기출 추천해주세요 0 0
스불+기출 같이 하려는데 뭐가 좋을까요 ㅜㅜ 일단 강영찬 엗온 생각 중입니다....
-
토익700 수능등급 2 0
어느정도인갸용
-
반수 조언 좀 해주세요ㅠㅠ 0 0
작수 현역 52443 화작미적세지사문했고 수시러라서 최저만 맞추는 공부했는데요...
-
메가패스 존나 비싸네 5 0
n수생 할인 받아도 50만원 넘는게 말이 되는건가 이거
-
심심해서 쓰는 강사 후기 (2026.03.18) 2 4
오르비 업데이트되고 글 수정 오류 때문에 더이상 기존 글 수정을 못해서...
-
황밸식공부 2 1
영어비중 좀 늘림
-
더프 오답율이 너무 낮긴함 0 2
국어 ㅇㅇ 컷은 생각보다 높을듯 오히려 영어가 더 높은거 같기도
-
정월대보름님의 장례식입니다 11 3
제가 밀었습니다
-
내가없는사이에 12 0
재밌는떡밥이라도돌앗냐
-
왜 이미 집인거지 7 0
집가고 싶은데
-
암튼그런것임;;
-
아 ㅅ비ㅣㄹ 숙취 2 0
배아파 ㅠㅠㅠㅠ
-
이원준 진짜 신이네 2 0
처음으로 이감 풀이를 70분 안에 검토까지 끝내씀 독서 푸는 시간이 체감상 6~7분...
-
경제지문 초장부터 ㅈ박고 날렸음,, 시험 끝나고 오답할때도 어려웠는데 쉬웠다는 반응밖에 없네요