세이브
게시글 주소: 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 답글 달기 신고 -
-
슬슬 저녁먹고 자야겠다 2 0
어제도 8시수면 2시기상해서 벌써 졸리네
-
I got eye on that four five 1 0
six
-
자꾸 몇개씩 분실됨 ㅅㅂ 누가 훔쳐가나 이거 볼펜 가격도 천원대라 은근 부담스러운데 짜증나게
-
기출코드 수분감 순서 ㅊㅊ 3 0
시발점 3회독 후 기출코드 수분감 step1 둘 다 돌리려는데 뭐 먼저하는데...
-
그사람만 없었으면 ㄹㅇ 핵빵이였는데 아오
-
오르비가 노잼이야 5 0
글 리젠이 왜 이래
-
“ssis-586”
-
복싱갑쉬다 4 0
-
자도자도졸려 2 1
오늘하루종일잤음...
-
첫글인데 3 0
다들 고2,3정도때 전과목 학원이나 과외안하나요? 인강으로 커버 될까요?
-
2지망 붙을거같기도 1 0
최초 예비 23 1차 14 2차 6 일단 3명은 확정으로 빠지는건데 1명 암표.. 제바르를르르를
-
액정깨졌는데 금 4줄인가 갔음 근데 방금 보호필름 뜯어보니깐 멀쩡하네요 하 도파민 ㄷㄷ
-
성대 사과계 lc 단톡?? 2 0
성대 포기신청 하고 환불까지 받았는데 오늘 갑자기 임시lc단톡방에 초대됐어요 나가도되는거겟죠?
-
심심하다 3 0
잭스
-
메가패스 가격 4 0
3월에 공부시작한다하면 지금사야 싸나요? 3월에 사야 싸나요?
-
아니 잠만 점공리폿 3 0
추합으로 바꾸면 다시 불합으로 못바꾸는거였음????? 위에 애가 허수 트롤질하는거...
-
마젠타 누나 개예쁘다 ㅎㅎ 1 0
ㅇ
-
에타 오류임? 3 0
합격자인증이 끝나서 재학생인증을 하라는데 신입생이라 학생증도 없는데 어케 하라는거임??
-
중앙 경영 예비 1 0
3차 확인 하고 397번인데 이거 될거같음?
-
칼럼 쓸라고 노트북 켯는데 2 0
머 쓰지