.
게시글 주소: https://orbi.kr/00076616610
파이썬에서 rust로 수정
use reqwest::{header, Client, Response};
use reqwest::cookie::Jar;
use std::sync::{Arc, atomic::{AtomicUsize, Ordering}};
use tokio::time::{sleep, Duration};
use std::error::Error;
use dashmap::DashMap;
use std::io::{self, Write};
use futures::stream::{FuturesUnordered, StreamExt};
use tokio::sync::{Barrier, Semaphore};
use serde_json::Value;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let jar = Arc::new(Jar::default());
let mut headers = header::HeaderMap::new();
headers.insert("accept", header::HeaderValue::from_static("application/json, text/plain, */*"));
headers.insert("accept-language", header::HeaderValue::from_static("ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"));
headers.insert("cache-control", header::HeaderValue::from_static("no-cache"));
headers.insert("x-requested-with", header::HeaderValue::from_static("XMLHttpRequest"));
headers.insert("connection", header::HeaderValue::from_static("keep-alive"));
let fire_client = Arc::new(Client::builder()
.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")
.default_headers(headers)
.cookie_provider(Arc::clone(&jar))
.tcp_nodelay(true)
.http1_only()
.pool_max_idle_per_host(100)
.build()?);
println!("Attempting Login");
let login_params = [
("url", "https://orbi.kr/amusement/lottery"),
("username", "아이디"),
("password", "비번"),
];
let login_res: Response = fire_client.post("https://login.orbi.kr/login")
.header("content-type", "application/x-www-form-urlencoded; charset=UTF-8")
.form(&login_params)
.send()
.await?;
if !login_res.status().is_success() {
println!("Login Failed: {}", login_res.status());
return Ok(());
}
println!("Login Success. Protocol: {:?}", login_res.version());
let url = "https://orbi.kr/amusement/lottery/buy_ticket";
loop {
println!("\n[ACTION] Pre-building 30-round burst fire payloads...");
let success_count = Arc::new(AtomicUsize::new(0));
let prizes: Arc<DashMap<i64, usize>> = Arc::new(DashMap::new());
let barrier = Arc::new(Barrier::new(31));
let fire_semaphore = Arc::new(Semaphore::new(30));
let mut requests = Vec::with_capacity(30);
for _ in 0..30 {
requests.push(fire_client.post(url).build()?);
}
let mut worker_handles = Vec::with_capacity(30);
println!("[ACTION] Spawning 30 tasks to the runtime...");
for req in requests {
let client_ref = Arc::clone(&fire_client);
let b_ref = Arc::clone(&barrier);
let s_ref = Arc::clone(&fire_semaphore);
let handle = tokio::spawn(async move {
let _permit = s_ref.acquire().await.unwrap();
b_ref.wait().await;
client_ref.execute(req).await
});
worker_handles.push(handle);
}
print!("[ACTION] Synchronizing with spawned tasks...");
io::stdout().flush().unwrap();
barrier.wait().await;
println!(" FIRE!");
let mut responses = Vec::with_capacity(30);
for handle in worker_handles {
if let Ok(Ok(res)) = handle.await {
responses.push(res);
}
}
println!("\n[ACTION] Analyzing impact data from the void...");
let mut analysis_tasks = FuturesUnordered::new();
for response in responses {
let s_count = Arc::clone(&success_count);
let p_map = Arc::clone(&prizes);
analysis_tasks.push(async move {
if response.status().is_success() {
if let Ok(bytes) = response.bytes().await {
let json: Option<Value> = serde_json::from_slice(&bytes).ok();
if let Some(j) = json {
if j["success"].as_bool().unwrap_or(false) {
s_count.fetch_add(1, Ordering::Relaxed);
}
if let Some(p_type) = j["data"]["prize_type"].as_i64() {
if p_type > 0 {
p_map.entry(p_type).and_modify(|e| *e += 1).or_insert(1);
}
}
}
}
}
});
}
while let Some(_) = analysis_tasks.next().await {}
println!("[REPORT] {}/30 Success (Spawned Barrier Strike)", success_count.load(Ordering::Relaxed));
for entry in prizes.iter() {
let k: i64 = *entry.key();
let v: usize = *entry.value();
println!(" >> Prize Type {}: {} ea", k, v);
}
for i in (1..=70).rev() {
print!("\rNext attempt in {}s... ", i);
io::stdout().flush().unwrap();
sleep(Duration::from_secs(1)).await;
}
println!();
}
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
그래서니들이뭘할수있지 0 1
성대입학처가전화질로장난을치든반영비로메이플을하던버튜버를만들어뒤에빨간약배리나를숨겨놓든윤석...
-
그러지 않고서야 다른 대학 입학처 5개쯤 합친 정도의 일을 하는 게 설명이 안됨
-
추워서 몸이 힘든듯 2 0
걍진짜 개춥고 개피곤함
-
문학 강사 추천 0 0
문학 강사 추천해주세요! 대성 메가 다 있어요
-
센츄 신청 어케 함 4 1
ㅈㄱㄴ 국어 수학만 따지는 거임? 고2임
-
진학사 결제 할까요 말까요 0 0
농어촌 가능이라 일단 김영일 결제하고 보고있는데 아무래도 진학사가 표본이 더 많다보니까.....
-
서강 경영 0 0
쓸까말까쓸까말까쓸까말까
-
뉴런 진도표 5 0
뉴런 이번에 진도표 올라왔던데 저 진도대로 따라가면 되는거임? 아니면 더 타이트하게...
-
지금 낙지만 보고잇는데
-
이건 사문현상임 자연현상임? 12 0
사람이 똥을 싼다 이건 인간의의지로 화장실에가서 싸는거니 사문현상인가 자연현상인거 같기도하고..
-
강x이벤트 당첨됐네 2 0
뿌링클말고 에어팟 주라고 ㅠㅠㅠ
-
강기원 현강 0 0
강기원 미적 정규반인데 스1에서는 수2랑 미적만하고 수1을 안한다고 하더라구요..?...
-
연말 바쁘다 3 0
이거저거 일이 많네 영어공부도 해야되고
-
한의사 폐지하고 의사로 통합해요!
-
반영비 가지고 장난치는 학교는 절대 용서 못함
-
뭐든 해야하는데 3 1
지금 몸이 안좋으니 짜증만 늘고 그냥 당도 100% 펄 가득 추가한 공차 L사이즈로...
-
그 일이 괴상하긴 하다만
-
독재에서 7 0
타이머를 소리키고 쓰는 애가 있네 집에서 그렇게 알려준건가
-
예비 고3 올오카 들으면서 천천히 기출 혼자 풀어보려는데 마닳이 나을까요 아님 마더텅이 나을까요?
-
정승제 선생님께 부탁... 4 0
-50일수학에서 초등학교 과정부터 고등학교 3학년 전 과정 (미적분.기하.확률과...
-
안철수 의원 “대입전형 ‘늑장 공개’ 없앤다”…고등교육법 개정안 대표발의 2 0
연합 [헤럴드경제=양대근 기자] 국민의힘 안철수 국회의원(분당갑)은 지난 24일...
-
홍대 동국대 자전 1 0
인문전형으로 신청해서 공대로 가는거 되나요? 홍대는 되는걸로 아는데
-
내신 때 다 1뜨긴 했는데 ㅈ반고라 기출을 안 돌려봐서 이미지쌤 미친기분을 하고...
-
. 0 0
춥군
-
도대체 뭔일이 일어났길래 저렇게 더웠던걸까요?
-
시대 재종 2 0
시대 대치 수능성적선발이랑 평가원성적선발 둘다 넣었는데 이렇게 뜨면 둘다 떨어진...
-
고대 폭날것같은데 연대로 튀기엔 기숙사가 싫다. 6 1
걍 과 낮춰쓰는게 낫나
-
살면서 내가 먼저 말걸어서 친해진 친구가 한명도 없는데 자전가서 1학년 걷돌고...
-
성균관대 입학처 왈 "진학사 전체적으로 너무 짜다" 12 0
방금 성균관대 입학처랑 전화상담함 "진학사 성균관대가 전체적으로 매우 짜게...
-
고대식 650 0 0
.
-
정병호이비에르vs범바오 1 0
180도 변하는 정병호날두의 프로메테우스vs지각안하는범바오의sb 이번에 프메...
-
디카프 2027 언제나오나용? 0 0
궁금
-
복전 4년 컷 가능??? 0 0
성대 바이오메카트로닉스 들어가서 기계과 복전하려는데 찾아보니까 복전할 거면 5년은...
-
왜 직접 빼기를 해야 하는 거야
-
50일의수학으로 기초부터 다시 탄탄히 하고있는데 승제쌤이 본인 수학인생을 걸고...
-
단국대는 도시계획부동산학과 가천대는 인공지능학과인데...
-
아니 이 좃만한 땅에서 이렇게 온도가 차이 날 수 있나 24 1
한반도 크기 거 얼마 한다고 영하 35도는 ㅅㅂㅋㅋ
-
서강대 이월인원 7 0
별로 없어요 ㅠ
-
아예 원서 쓸 수 없을정도로 조진 사람도 있음
-
진학사 이번주말에 업데이트함? 2 0
?
-
올해 확통사탐런 한 후로 계속 1~2등급이던 게 싹다 3으로 떨어짐 현장에서 멘탈...
-
난아니라고봐
-
진학사 카드 봐주세요 9 0
나군에 외대 안정으로 노어 쓸지 아님 경제학부 쓸지
-
흠.. 진학사 네 칸인데 컷차이 꽤 나는 곳이 44퍼라고 나오네요 다군이라 안에...
-
5칸 중간 5칸 조금 0 0
진학사에서 이런건 어떻게 판단하는 건가요?
-
본인 카톡/쪽지가 씹혔다면 1 6
다시 보내주세요 계속 보내셔도 됩니다 매 시즌 상대하는 수험생이 몇백명이라 간간히...
-
언매는 틈틈히 하고있다 쳐도 탐구는 진짜 시간이 없네 과탐 했으면 시간분배 조졌을거같네
-
혹한기 진짜 하기 싫다 0 0
진짜 너무 하기 싫은데
-
전국총학생회 "국가장학금Ⅱ 폐지, 학생에 부담 전가" 재검토 요구 1 0
[서울=뉴시스] 구무서 기자 = 전국 100여개 대학 총학생회가 연대한...
-
20대후반인데 12 1
한의대 가는거 어떻게 생각하시나요..? 연대 문과계열,지방한 가능한 성적대인데 저는...
이거 해킹프로그램이래요
저 이거 보자마자 계좌에서 100덕 빠져나갓어요 ㅠㅠ