Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bot steam
Forum PHP.pl > Forum > PHP
Izzder
Cóż, to zagadnienie chyba interdyscyplinarne, ale jako że główną jego część chcę wykonać w PHP, to zamieszczam je tutaj : )

Otóż chcę zrobić bota w php który potrafiłby zalogować się na steama używając podanych danych konta (to nie żaden brute forcer czy inny włamywacz, dane do konta byłyby podawane w configu), używać rynku steamowego i wysyłać oferty wymiany. Od razu zaświadczam, że to nie będzie żadne szkodliwe stworzenie, nie będzie zmieniało cen rynkowych ani czaiło się na żadne dobre ceny żeby sprzedawać drożej, nic z tych rzeczy. Chcę tylko mieć automatyczny dostęp do mojego ekwipunku steamowego i wysyłania z niego przedmiotów na trade linki które bot brałby z bazy danych, a zakupy bot robiłby tylko po to żeby mieć co wysłać na owe trade linki bez mojego udziału i męczącego klikania. Aktualnie każda taka wysyłka z mojej strony wymaga znalezienia linku do wymiany, znalezienia przedmiotu na rynku, kupienia go, i wysłania - fajnie byłoby to zautomatyzować. I tu pojawia się problem - z której strony się za to zabrać? Próbowałem już fetchować stronę logowania przy pomocy snoopiego, ale jego opcja wysyłania POSTów rozbiła się zupełnie o AJAXową autentykację steama. Podejrzewam że problemu by nie było, gdyby steam nie wykrywał snoopiego jako oddzielnego user_agenta od mojej przeglądarki, bo autentykacja z nowego urządzenia lub przeglądarki jest 2 krokowa, podczas gdy logowanie z "zaufanego" urządzenia/przeglądarki zdaje się być kwestią wysłania jednego formularza.

Dalej niczego nie próbowałem, ale poczytałem trochę o temacie i mam kilka pomysłów, tylko nie wiem które mają jakikolwiek sens, a które to strata czasu.
Mógłbym spróbować odpalić jakiegoś javascripta na stronie fetchowanej przez snoopiego żeby pokonać tą 2 stopniową autentykację, ale podejrzewam że sam fakt iż strona jest sfetchowana przez snoopiego zabija steamowego ajaxa i czyni logowanie niemożliwym.

Inna możliwość która przychodzi mi na myśl to jakieś kreatywne użycie ajaxa do wysyłania danych na stronę steama, ale nie wiem czy to w ogóle możliwe (jestem raczej laikiem w kwestiach js i komunikacji przez protokoły), poza tym to podpada chyba pod cross site scripting, a nie uśmiecha mi się używanie takich metod do zupełnie pokojowych celów (zwłaszcza że steam może mieć przed tym jakieś zabezpieczenia).
Może w takim razie da się włożyć stronę steama w frame i dodać tam tego javascripta który sam by wysyłał wszystkie potrzebne formularze i dane? Wydaje mi się że takie coś powinno działać, ale nie jestem zbyt obeznany w js/jq, poza tym nie wiem czy autentykacja steama nie będzie tutaj również stwarzała problemów.

Podobno język Selenium nadaje się do automatyzacji przeglądarek, nie wnikałem w temat bardziej, ale być może umożliwiłby mi wstawienie skryptu js prosto na wczytaną stronę steama, nie na frame, albo nawet na zalogowanie z użyciem samego selenium (nie jestem pewien dokładnych możliwości tego języka).

Streamy i cURL również wydają się obiecujące, w końcu służą do komunikacji między skryptami i aplikacjami, ale nie wiem które by się lepiej nadawało, o ile w ogóle któreś z nich.
Normalnie sam bym sprawdził wszystkie te możliwości i poszukał innych, ale czas mnie nagli i potrzebuję tego bota w ciągu 7 dni. A do tego nie jestem nawet pewien czy to co chcę zrobić jest w ogóle możliwe, nie widziałem żadnego steamowego bota napisanego w php (ani selenium, ale to chyba raczej mało znany język), wszystkie są równo od góry do dołu w C(++/#). Gdyby PHP odpadało, to wolałbym nie marnować czasu na nie i zabrać się za przyśpieszony kurs C++/C# i odwrotną inżynierię na jakimś open sourcowym bocie, więc byłbym wdzięczny za opinię na ten temat kogoś bardziej doświadczonego niż ja : )
!*!
W takim razie skoro wiesz czego użyć, to do czego My Ci jesteśmy potrzebni? W PHP/czymkolwiek, użyj curl i wysyłaj do nich odpowiednie dane, bez znaczenia czy to będzie post/ajax + inne ewentualne nagłówki, które możesz wyciągnąć ze wspomnianych programów C#.

Chyba, że to zlecasz. Ale wtedy to nie ten dział i z pewnością cena Cie przerazi ;)
Izzder
Rzecz w tym że nie mam zielonego pojęcia czy moje pomysły mają jakikolwiek sens. Jak już mówiłem, nie jestem bardzo obeznany z javascriptem/jquery, nie zagłębiałem się zbytnio w selenium/curla/streamy a czas mnie nagli. Potrzebuję tylko jakiejś rady która z opcji będzie najlepsza, o ile któraś w ogóle się nadaje, wtedy skupię się na niej i nie będę tracił czasu na wszystkie inne.
aniolekx
kiedyś testowałem takie rozwiązanie jak: Goutte, przykład działania tutaj.
irekk
Autoryzacja do ich usług jest oparta na oauth. Niestety z niczym poza pobieraniem danych nie miałem do czynienia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.