세이브
게시글 주소: 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 답글 달기 신고 -
-
인생이 원래 그런거다 9 2
내 외모 신체 학벌 성격 자아 현실 모조리 마음에 들지않지만 그럼에도 꿋꿋이 내...
-
학교 자랑 8 5
재수성공
-
예를 들어 님이 수능 국어 상위 1퍼고 수능 수학 상위 10퍼다 국수 양의...
-
딱히 아무 목표도 없어서 고등학교 내내 놀다가(씹노베였다는 뜻) 졸업하고 바로 군대...
-
본인 위치가 어디든간에 8 11
본인의 잣대만으로 타인을 무시하는 건 진짜 잘못됐다고 생각 그리고 보통 진짜 잘난...
-
헛구역질 왜계속 나오지 8 0
ㅅㅂ
-
3월엔 휴릅해야겠다 5 0
방학이라 시간 많아서 똥글 싸지르는거지 개학하거도 이러면 쉽지 않을 거 같음......
-
시대인재 부남 4 0
저거 왕오춘 모티브로 그린건가
-
연세대 응용 통계 진학사 점공
-
중경외시 따라지 vs 원서영역 물로켓 찍 11 34
둘의 대결인거임?
-
수특 영어랑 영독연이랑 차이점 5 0
이 뭐에요?? 보통은 영독연만 사나요??
-
미카리근데 6 0
lck보나
-
이게 야스지 5 0
초코빵 호지차 프리렌
-
오르비 잘안들어오니까 9 1
팔로우 돼있는데 누군지모르겠는 사람도있네..
-
오늘 조기축구 일본국대 유니폼 입고 갔는데 이게 욕먹을 일임? 7 0
정작 같이 공찬 형님들은 별 말 없었는데 공차러 가는 길에 (번화가,지하철) 웬...
-
현실에서 공부 존나 잘했네 소리 듣는 학벌은 어디까지임? 5 0
현실에서 대중에게 (핵대중 아님) 공부 존나 잘했네 소리 듣는 학벌은 어디까지임?
-
사탐은 개념만 끝내면 될까요
-
메인글 뭔 내용이에요 4 0
뭐를 논하는지 하나도 모르겠네요 옯찐따의 숙명인가
-
제미나이 이 미친새끼 12 6
강민철보다 국어 잘할듯
-
레어좀사가주실분 ㅅㅂ 5 0
저 이제 이분 안들어요