세이브
게시글 주소: 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
제가 그 숫기가 없고 낯을 가려서 선배분께 밥약같은거 못하겠는데 그냥 선배분께서...
-
공부를 안해서 걍 다 찍어버리면 찍맞 개수가 늘어날꺼임요
-
영어 문풀하는법 다까먹음 4 2
요령 다까먹음요 큰일났다 고딩때 문풀 노트정리했는데 노트까지 실종됨
-
정병훈선생님 mbti 뭘까 1 0
ISTJ?
-
제2외국어 8 1
중국어 진짜 조오금 할줄아는데 고인물들이 많고 아랍어는 노베인데 절평이면 아무거나...
-
성대 사과계 650이면 4 0
때려죽여도 못가는 점수임? 내 위에 성대 사과계던데 이분들 빠져야 연쇄펑크가 가능할거 같은
-
성훌 운동 많이된다 5 1
서성한에서 제일 잘하는 대학이야 거의 연고대급이라고 보면 돼
-
공부 7일차 6 1
이제 수학 개념 끝나서 오늘 처음으로 실전개념 강의 들었는데 시간 엄청...
-
문과 탑 5 0
은 경영인가요?
-
영어 공부방향 관련 질문 2 0
구문 강의(조정식 믿어봐 문장)들으면서 인강 들을때는 퍼즈버튼 누르고 혼자...
-
외대 잔디깔림뇨???? 3 2
더 멋있어지는건가 HUFS
-
고3때 성격안좋고 타인에게 무례하게 대한 애들은 원래 대학라인에서 ㅈㄴ게 추락함나는...
-
아 시발 2 0
아 이어폰 잘못 샀다
-
6개를 찍었는데 하나는 주관식 (4점) 다섯개는 객관식 (3/4444) 근데 여기서...
-
노벨피아 tts가 가능했네.. 이걸루 웹소설 정주행 해야겠다
-
내 개인정보는 대충 2 2
한 5명 정도가 돌려가면서 쓰고 있을듯
-
다시올때까지숨참는다. 4 5
흡.
-
돈낭비일까
-
강대조교 3년차 생명 질받 7 0
ㅖ
-
오르비엔 나 차은우보다 잘생긴듯? 이런말 하는사람 없어서 조음 3 1
(진짜임)