세이브
게시글 주소: 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 답글 달기 신고 -
-
성대 인문에서 설대 경영 10 3
1년 버릴 가치 있음?
-
서울대 점공계산기 0 0
뭐가 제일 잘 맞아요??
-
모의고사이름 뭐로하지 18 3
- EGOIST 모의고사 - TMI(Too Much Information) 모의고사...
-
동생 국어 강사 ㅊㅊ 받아요 0 0
동생 예비고2 고1 모의고사는 다 1등급 피램, 마더텅으로 고3 기출 두번 돌린...
-
오늘 피씨방가려했는데 0 0
뭐가 많이 밀려서 못가게 되었네 이런
-
Claude가 잼민이하고 지피티보다 좋은거같냐 왜 4 2
기분탓인가
-
잡담태그 해제를 해야되는데 0 0
순간 차단할뻔함 뇌에 에러가 나는게좀무서움
-
아주대의 괴담 1 3
-
응애 2 0
응애
-
14로 시작했을텐데 고2때 정시파이터의 기본이라고 친구가 깔아줌
-
이제 진짜 안 돌아와야겠다 0 0
괜한 죄책감과 뭔가를 숨겨야 한다는 강박 이제 힘들다
-
남자가 뭔 성형이냐 할 수도 있는데 졸린 눈(안검하수)이 심해서 눈동자가 반 이상...
-
질문있습니다 의대 1 0
제가 어디서 봤는데 의과대학을 6년 다니거나 4년제 대학 졸업후의과대학원을 4년...
-
그냥 인문논술 2월부터 할까 0 0
칼을 가는거지 아주 날카롭게
-
[칼럼] 정법에 대하여 18 5
평소에 궁금한 게 있을 때나 원서철에 가끔 질문하러 들어왔었습니다. 제가 많은...
-
조정식 질문 좀 1 0
고3이고요 고2 11월 모고 78점인가 3등급 떴는데 믿어봐 해도 되나요 그냥 괜찮아 할까요?
-
이게 늦게자서 오래자나 싶어서 10시에 자봤는데 10시에 일어나고..계속 12시간씩...
-
물2 할때마다 물2는 ㅈ같다는 생각밖에 안남
-
에무뭉 6 1
원더호이??