Jak programiści pokonali handlarzy biletami dzięki Pythonowi
Czy kiedykolwiek próbowałeś kupić bilety na koncert popularnego zespołu w pierwszych minutach sprzedaży? Zazwyczaj wygląda to tak: odświeżasz stronę o 10:00:00, a już o 10:00:01 biletów nie ma. W Chinach ten problem jest jeszcze bardziej dotkliwy, dlatego właśnie tam powstały projekty takie jak damaihelper. To zautomatyzowany system zakupu biletów na platformach takich jak Damai, Taopiaopiao i Binwandao.
Ciekawe jest to, że projekt ewoluował od szybkiego i brudnego skryptu do pełnoprawnej aplikacji z interfejsem webowym i prymitywną sztuczną inteligencją. Natknąłem się na niego przypadkowo i postanowiłem rozwikłać, jak działa współczesny "wyścig zbrojeń" na rynku biletowym.
Po co się tym zajmować, skoro są oficjalne aplikacje
Głównym problemem głównych platform są scalperzy z ich farmami botów. Zwyczajny człowiek fizycznie nie jest w stanie konkurować z szybkością skryptu. Damaihelper to próba wyrównania szans dla tych, którzy rozumieją, jak działają Python i Selenium.
Projekt automatyzuje cały cykl: od uwierzytelniania i wyboru żądanego sektora, przez rozwiązywanie captch, aż po składanie zamówienia. Autor twierdzi, że najnowsza wersja z wbudowanymi "agentami" zwiększa szanse powodzenia o prawie połowę. Oczywiście to są marketingowe liczby z README, ale stojąca za nimi podstawa techniczna jest solidna.
Co potrafi ta maszyna
Developer Guyungy upakował pod maską całkiem zróżnicowane zoo technologiczne. Oto co przykuło moją uwagę:
- Wsparcie wieloplatformowe. Skrypt nie jest przywiązany do jednej platformy. Może współpracować z głównymi chińskimi agregatorami biletów. A architektura jest modularna, więc dodanie nowej strony to tylko kwestia napisania jednej wtyczki.
- Omijanie zabezpieczeń. Zamiast standardowego Selenium, autor używa zmodyfikowanych metod automatyzacji stealth. To pomaga oszukać systemy antyfraudowe wykrywające podejrzaną aktywność w zwykłej przeglądarce kontrolowanej przez WebDriver.
- Przetwarzanie obrazu. Biblioteki Pillow i pytesseract nie są tu tylko na pokaz. Potrzebne są do rozpoznawania prostych captch. W przypadku bardziej złożonych, najnowsze aktualizacje wspominają o użyciu algorytmów AI.
- Łatwe uruchamianie. Jeśli kiedyś trzeba było się bawić z konsolą, teraz jest GUI w Pythonie, a nawet panel webowy. Możesz odpalić serwer lokalnie i zarządzać procesem przez przeglądarkę.

Stos technologiczny i architektura
Projekt jest napisany głównie w Pythonie. Do automatyzacji przeglądarki używany jest Selenium w wersji 4.x. Aby uruchomić skrypt dokładnie w sekundę otwarcia sprzedaży biletów, używany jest APScheduler.
Ciekawe jest zorganizowanie zarządzania czasem. W konfigach znajdują się ustawienia synchronizacji czasu NTP. W walce o bilety liczy się każda milisekunda, a jeśli zegar systemowy twojego komputera będzie opóźniony nawet o pół sekundy względem serwera platformy — przegrałeś.
Struktura folderów wygląda logicznie:
ticket_script.py— tutaj znajduje się główna logika interakcji ze stronami.GUI.py— interfejs dla tych, którzy nie lubią terminala.config/— folder z ustawieniami, gdzie przechowywane są dane konta i preferencje miejsc.logs/— krytycznie ważna rzecz do debugowania, gdy coś pójdzie nie tak podczas sprzedaży biletów.
Jak to działa w praktyce
Aby uruchomić tę rzecz, potrzebujesz Pythona 3.8+ i zainstalowanego Google Chrome. Proces jest standardowy: clone repozytorium, zainstaluj zależności przez pip.
Do uruchomienia głównego scenariusza użyj polecenia python ticket_script.py. A jeśli chcesz ładny interfejs — python GUI.py.

Wewnątrz interfejsu webowego możesz skonfigurować wszystko: od liczby biletów po konkretne nazwiska widzów (w Chinach zakupy są często powiązane z dowodami osobistymi). Jest nawet opcja użycia serwerów proxy, aby uniknąć blokad IP, jeśli zdecydujesz się uruchomić skrypt w dziesięciu wątkach.
Czy warto spróbować
Będę szczery: projekt jest niszowy i dostosowany do chińskiego rynku. Jeśli marzysz o koncercie w Pekinie — to twój najlepszy przyjaciel. Ale nawet jeśli nie, damaihelper jest interesujący jako samouczek budowania złożonych botów z Selenium.
Logging jest tu dobrze zaimplementowany, a także są przykłady radzenia sobie z dynamicznymi elementami strony i pakowania złożonego skryptu w przyjazną dla użytkownika powłokę dla zwykłych użytkowników.
Jedyną wadą jest dokumentacja w języku chińskim. Ale kod jest wystarczająco przejrzysty, a nowoczesne tłumacze łatwo radzą sobie z komentarzami. W przeciwnym razie to świetny przykład tego, jak entuzjaści rozwiązują codzienny problem za pomocą kodu.
Najważniejsze, co trzeba zapamiętać, to strona etyczna — takie narzędzia są przeznaczone do użytku osobistego. Wykorzystywanie ich do przemysłowego skalpowania biletów jest nie tylko wątpliwe moralnie, ale może też prowadzić do blokady konta. W końcu to tylko technologia, a to, jak jej używasz, zależy od ciebie.
Powiązane projekty