| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
IRC-Galleria satunnaispainelijaSahrah 30.04.08 14:50 Nimensä mukaan tämä koodipätkä painelee IRC-Galleriassa Satunnainen - nappulaa.
<?php /* Tämä koodipätkä painelee IRC-Gallerian Satunainen nappulaa Tarvitsee toimiakseen gallerian laittaman PHPSESSID evästeen. */ //Kirjautumiseväste PHPSESSID (näkee selaimen asetuksista, mutta itse käytän ainakin firefoxille, pluginia, jolla voimuokata evästeitä: $evaste = 'PHPSESSID=TÄHÄN_ID_SI'; //Montako kertaa painetaan Satunnaista $maara = 4000; set_time_limit(0); //Ei aikarajaa, no itselläni tästä ei ole hyötyä jos komentorivillä käyttää function arvo_nick($tulo) { //Painaa satunaista, ottaa parametrinä referille edellisen nickin, jotta näyttäisi palvelimen logissa mahollisiman aidolta ;) global $evaste; $yhteys = @fsockopen("irc-galleria.net", 80, $errno, $errstr, 10); //JOS yhteyttä ei jostakin syystä saada muodostettua, pistetää FAILit ja odotetaan 30sek ja siirrytää seuraavalle kierrokselle //Kun noita timeoutteja jostakin syystä näyttää tulevan aina välillä.... if (!$yhteys) { echo "FAIL!!! Odotetaan uutta yhteytt\x86 ......\n"; sleep(30); return $tulo; } // samoinkun useragentit ettei pistä silmää lokissa $p = "GET /random.php HTTP/1.1\r\n"; $p .= "Host: irc-galleria.net\r\n"; $p .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n"; $p .= "Keep-Alive: 300\r\n"; $p .= "Connection: close\r\n"; $p .= "Referer: http://irc-galleria.net/view.php?nick=$tulo\r\n"; $p .= "Cookie: $evaste\r\n\r\n"; fputs($yhteys, $p); //Lähetetää herra paketti while (!feof($yhteys)) { //Silmukoidaan vastaanotettua dataa $gets = fgets($yhteys, 128); if (preg_match('/(Location: view.php\?nick=)(.{0,})$/m', $gets)) { //JA erotetaa säännöllisellä lausekkeella se sijainti otsikkotiedoista. $nick = preg_replace('/(Location: view.php\?nick=)(.{0,})$/m', "$2", $gets); fclose($yhteys); return trim($nick); } } @fclose($yhteys); } function mene ($nick, $tulo) { global $evaste; $yhteys = fsockopen("irc-galleria.net", 80, $errno, $errstr, 10); //Tässä sama kun edellisessä functiossa if (!$yhteys) { echo "Odotetaan uutta yhteytt\x86......\n"; sleep(30); return $tulo; } $p = "GET /view.php?nick=$nick HTTP/1.1\r\n"; $p .= "Host: irc-galleria.net\r\n"; $p .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n"; $p .= "Keep-Alive: 300\r\n"; $p .= "Connection: close\r\n"; $p .= "Referer: http://irc-galleria.net/view.php?nick=$tulo\r\n"; $p .= "Cookie: $evaste\r\n\r\n"; fputs($yhteys, $p); //Lähetetää paketti perkele fclose($yhteys); } for ($i = 0; $i < $maara; $i++) { //Silmukoi noita kahta funktiota... $nick = arvo_nick($tulo); mene($nick, $tulo); echo "Kierros $i k\x84yty: $nick\n"; $tulo = $nick; //Pistetää talteen seuraavaa kierrosta varten niille referereille } ?> Sahrah 14:52 30.4.08 Eka koodivinkki, rivit meni ehkä ävhän pitkisk mutta pitää korja ta kun pä ä sen koti a :P: editoitu: 16:44 30.4.08 rane 15:47 30.4.08 Olen tehnyt vastaavan rubylla, tuli kuulemma joitain tuhansia kävijöitä kun näkyi kaikkien vieraslistoissa :p edit: laitanpa sen nyt vaikka tähän näytille kun kerran löysin sen tuolta require "erb" require "net/http" require "pp" class IrcGalleria HOST = "irc-galleria.net" def initialize ask_account login(@user, @pass) @nicks = [] loop do begin random str = @nicks.size.to_s + " " + @nicks.last print "\r" + str.ljust(40) STDOUT.flush rescue => e puts e end end end def ask_account begin require 'termios' $stdin.extend Termios oldt = $stdin.tcgetattr newt = oldt.dup newt.lflag &= ~Termios::ECHO print "user: " @user = $stdin.gets.chomp $stdin.tcsetattr(Termios::TCSANOW, newt) print "pass: " @pass = $stdin.gets.chomp print "\n" $stdin.tcsetattr(Termios::TCSANOW, oldt) rescue LoadError => e puts e puts print "user: " @user = gets.chomp print "pass: " @pass = gets.chomp end end def login(username, password) @http = Net::HTTP.new(HOST) @headers = {} data = "login=#{ERB::Util.url_encode(username)}&passwd=#{ERB::Util.url_encode(password)}" resp = @http.request_post("/login.php", data) if resp.response['set-cookie'] =~ /PHPSESSID/ @headers['Cookie'] = resp.response['set-cookie'].scan(/(PHPSESSID=.+);/).to_s else raise "Wrong username or password" end end def random rnd = @http.request_get("/random.php", @headers) nick = rnd["location"].scan(/=(.*)$/).to_s loc = rnd["location"].gsub(/([^=]+)$/) { |m| ERB::Util.url_encode(m) } req = @http.request_get("/#{loc}", @headers) @nicks << nick unless @nicks.include?(nick) end end IrcGalleria.new ajv 18:32 30.4.08 Mihin tää maailma on menossa... Hankkikaa ihmiset elämä :D T.M. 23:12 30.4.08 lmao +1 @ ajv sepiseppola 15:02 3.5.08 Hauska skripti :D vaikka vähän turha onkin :P plussaa! L3p1_ 13:57 4.5.08 Mä olinkin jo kyllästyny siihe napin naksutteluun käsin :D. Kyllä tästä tylsään sunnuntaihin taas sisältöä sai. |
![]() Haku
|