세이브
게시글 주소: 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 답글 달기 신고 -
-
재수/n수 해보신분들 있나요 3 0
반수하려고 합니다. 최소학점만 들으려구요 1년에 수험비용 어느정도 들까요? 부모님...
-
세지 vs생윤 엉엉.. 1 0
생윤 작수 40점이고 1월 공부해보니 현돌 꾸준히 하면 점수 오를 것 같지만, 글...
-
나랑 맞팔 안한사람 있나 1 0
흐음...
-
배신감 드네요 ㅜ
-
현정훈 라이브 질문이요 6 0
시대인재 처음이라 모르는데 현정훈 들으면 시대인재 컨텐츠를 같이 주나요 아님 따로...
-
휴릅카운트를줄이기위해쓰는글 1 2
사실그동안계속눈팅하고있었지만왜인지글을쓰지않아오해를예방하기위해쓰는글
-
평가원>>고3 교육청>>>>>>>>>>>>>>>>>고2 교육청>>고1 교육청인듯
-
외대 학과명이 좀이상한데 6 0
예를들면 친척분들이 어느과갔냐고 물어보시면 이엘엘티 다녀요 라고 해야하는데 백퍼...
-
기타치는데 3 0
6번줄 끊어짐 미친 기타러들은 이게 얼마나 어이없는 상황인지 알 거임
-
당장 작년게 좋을라나?
-
그러게 걍 죽이지 말자니까 2 0
어차피 돌아오는데 뭐
-
Lck열차 출발 4 0
-
서강빼고 토요일 거를 오늘 미리 당긴 학교 제외
-
연고대 공대 사탐런으로 가려면 2 2
언미생사 백분위 몇정도 떠야함?
-
수특 독서 찍먹 후기 3 0
경제 지문 1개 밖에 안나옴 과학 기술에서는 생2 물2 내용 많이 나옴
-
오르비 뱃지 좀 더 2 0
많아지려나 그러지않고서는 저 대학생 전용 커뮤를 만들리가 없잖아
-
추가모집으로 떨어진 학교 다른과 다시 갈수도 있을까요? 국수영탐탐 126 125 4...
-
이거진짜 ㅆㅂ 5 1
saint. 서강 자전 현우진 유니 충남 3떨 미자공 사과 단톡 냥대 이걸로 검색어...
-
통합과학 진도 3 1
학교에서 단원순서대로 안나가시는 쌤들도 많다던데 진짜인가요? 통합과학1 겨울방학때...