세이브
게시글 주소: 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 답글 달기 신고 -
-
강민철 현강 1 0
대치 러셀에 강기분 일요일 오후반에 첫 수업 들으러 가는데 수업 어디서 하나요?
-
국어를 못하고 메디컬갈만큼 수학이 뒷받침이 안되어있음.. 공부하면 늘기야 하겠다만..
-
동국대 행정 vs 홍대 법학 4 0
어디갈까요
-
목매지않기로 햇어 그게 편하더라
-
중앙대 합격자 2 0
발표 어디서 났나요? 입학처 가도 안보이더라구요
-
현재 알려진 모든 수학과 과학의 법칙들을 복소체계로 다시 나타내어야함 거기서 그렇게...
-
19학년도 9평 STM 지문 5 0
보기문항에서 5번 선지 관련 질문입니다. 지문 내용의 질량이 크면 -> 단분자층...
-
서강대학교 입학처 오늘 안내 2 2
어떻게 해석해야 될까요?^^
-
연대오늘도안나오면 4 5
뱃지 바꿔야지..
-
고3 될때동안 수학 국어 학원 다녔는데 학원 갈때 아니면 공부를 아예 하지를...
-
잡념이 많을때는 13 0
어떻게 해야하지
-
반수 조언 1 0
반수하면 단점이 있을까요.. 1년 늦게 졸업하는 게 불리한 점이 있나요?
-
뉴런 스블 차이가 크나요 2 0
시발점 듣고있고 시발점 거의 다 끝나서 곧 뉴런 하려고 책 사놓기는 했는데...
-
시립대 가고 싶어서 울었어요 3 0
오늘 조기발표해주세요제발
-
믿음의 1시조발 ㄹㅊㄱ 1 0
드가자
-
의대 뚫으려나 그정돈아닌가
-
전 콰인포퍼 지문 3문단 이렇게 해석했는데 어떻게 생각하시나요 3 0
'총각이 미혼 성인 남성이다'가 동어 반복 명제인 이유가 뭐야? 동어 반복 명제로...
-
화작 두 개 틀려서 울었어 1 0
평소에 언매든 화작이든 선택은 다 맞추는데 화작 때 딴 생각해서 그런가 문학 공부 좀 해야할듯
-
삼육대 건축학과 예비 9번 2 0
농어촌인데.. 안 빠지겠죠?