Rāda ziņas ar etiķeti php. Rādīt visas ziņas
Rāda ziņas ar etiķeti php. Rādīt visas ziņas

ceturtdiena, 2013. gada 26. septembris

Draugiem.lv sēņošanas skripti

Mušmire grozā 8)


Uzreiz jābrīdina, ka šī būs virtuāla sēņošana ar virtuālām sēnēm, bez taustāmas jēgas. Samērā bezjēdzīga nodarbe un laika nosišana zinātniski pētnieciskos nolūkos.

Uzdevums Draugiem.lv spēlē, jeb kā to nosaukt, “Sēņu raža” savākt visas 38 dažādu veidu sēnes un “turpināt sēņošanu”, savācot maksimāli daudz sēņu, lai atrastos “Sēņu ražas” Topā (http://www.draugiem.lv/d/senuraza/?tab=tops).

Sēņu raža

Sēņu Tops


Pirmais — būtu jāizveido lietotāja galā (Firefox pārlūkprogrammā) Stylish skripts, lai atvieglotu sēņu atrašanu draugiem.lv lapās.
Izveidojam tā, lai sēne lapā parādās kā liels pamanāms, sarkans bloks, ko būtu grūti nepamanīt.

Stylish
Iedošu visu Stylish skriptu ar visiem sēņu URL, ja pateiksiet, kā ar CSS z-index vai ko tur uzcelt bildi visu kārtu, slāņu, divu pašā augšpusē, kā to vajadzētu izdarīt z-index, bet ne vienmēr izdara.

Atrasta sēne


“Sēņu ražas” Topā redzam, ka sēņu lielie onkuļi savākuši tādus sēņu daudzumus, kurus fiziski klikšķinot ar peli nav iespējams savākt (varbūt var).
Tādēļ mums arī jākļūst par onkuļiem un jāuzraksta neliels skripts, kas virtuālo sēņu meklēšanu un klikšķināšanu pa sēnēm izdarītu mūsu vietā. Un tēlos pārlūkprogrammu.

Es izmantošu PHP skriptu no komandrindas. Citās programmēšanas valodās skriptu būtība būs līdzīga.
Jāatrod elementi, kas tiek nosūtīti uz mūsu pārlūkprogrammu tad, kad sēne parādās lapā un “jānoklikšķina” uz sēnes.
Vienīgais, kas mums ir, tā ir reversā inženierija.

Apskatot pārlūkprogrammā atsūtīto draugiem.lv lapas kodu brīdī, kad lapā parādās sēne, mēs redzam, ka tajā brīdī lapas kodā parādās apmēram šādi jauni JavaScript koda elementi:

draugiem.lv lapas html kods


Papētot smalkāk, mēs nonākam pie secinājuma, ka svarīgākais šajā JavaScript kodā ir rindiņa:

InfoBox.open( '/d/senuraza/rq/pop_found.php?sub=1&r=0&i=20&found=fc667bcbb3949abd73a68326ea3ed5a2471fa37c', {

Jo! Jo, tā rindiņa satur URL daļu (priekšā nāk http://www.draugiem.lv) , uz kura būtu jānospiež tajā brīdī, kad sēne ir lapā, lai atrastā sēne tiktu pieskaitīta pie mūsu iepriekš jau atrastajām sēnēm.

Šī JavaScript daļa ir mainīga un nekad neatkārtojas (random) URL daļas kods. Cik nu var saprast un nojaust.
Šeit jāsāk pieminēt mūsu PHP kodi, lai ērtāk varētu nodemonstrēt, kā tas viss notiek darbībā.

JavaScript kodu mēs dekodējam un izjaucam pa daļām ar PHP preg_match un vienkāršām regulārajām izteiksmēm.

$meklis="InfoBox\.open\( \'\/d\/senuraza\/rq\/pop_found.php\?sub=(\d+)&r=(\d+)&i=(\d+)&found=([0-9a-z]+)\', \{";


Saliekam atpakaļ atrastās sēnes URL un pieprasām sēnes URL.

PHP koda gabals


Ja viss ir noritējis veiksmīgi, tad šajā brīdī pie mūsu atrastajām sēnēm būtu jāpieskaitās vēl vienai atrastai sēnei.

Mega groziņš


Pieprasījumus uz draugiem.lv serveri veicam saudzīgi izmantojot mūsu PHP skriptu ar kādu labu cURL klasi (Replacement for Google Code Search? - Stack Overflow, Search · curlclass · GitHub, ... vai izmantojam savu):

require_once($darba_direktorija.'curlclass.php');

cURL klasē nodefinējam visus nepieciešamos parametrus, cookie headeri utml., lai sekmīgi darbotos ar draugiem.lv ielogojušamajamies lietotāju.
Pieprasījumiem nav jābūt nepārtrauktiem, jo cik nu var izsecināt, tad jauna sēne neparādās ātrāk, kā pēc apmēram vidēji 10 - 15 sekundēm.
Padziļinātu izpēti par pieprasījumu skaitu laikā pret nogaidīšanas laiku neveicu.

Teorētiski pietiek ar vienu pieprasījumu 10 sekundēs, taču tad mums jāskatās uz labāko sēņotāju (skriptotāju) Topu un jāizvērtē tur esošo sēņotāju sēņošanas ātrums :)

Vēl šķiet, ka bombīšana tikai pa / samazina izredzes ātrāk atrast sēni. Randomā vai pēc kārtas jāmaina arī pieprasāmās draugiem.lv URL sadaļas, piemēram, jāpieprasa  /messages/ , /visitors/ un tādā garā.

Starp citu, līdzīgi bija arī ar to Bermontu ķeršanu.

Ja tajā draugiem.lv “Sēņu raža” spēlītē bija paredzēti kadi labumi, tad jau iepriekš atsakos no tiem.
Nevēlos piedalīties sēņošanā


Interesanti, ka caur to senuraza topu var ievākt ~ 300k aktīvu lietotāju ID datus (Piemēram: /d/senuraza/rq/top.php?tab=tops&top=all&pg=28509).

Pielikumā PHP koda gabals: Draugiem.lv “Sēņu raža” PHP CLI sēņotājs.

sestdiena, 2010. gada 13. novembris

BH AtBiCh

Šeit bus BH AtBiCh:
bhatbich - Project Hosting on Google Code.
Dariet ko gribat, bet aizliegts kritizēt koda stilu.
Ja nepatīk, tad pārraksti un izveido jaunu versiju.

Labumi:

1. viens fails
2. ātrs
3. drošs
4. nav backdooru
5. Šifrēti URL
6. Ikonu, attēlu izmantošanas pieslēgšana / atslēgšana

Atjaunots.

Pamanīju, ka skripta beigās neesmu uzlicis URL šifrēšanu :( Tas būtu jāsalabo.
Tādēļ jau tas ir opensource, ka līks :)

ceturtdiena, 2010. gada 2. septembris

Radio 101 interneta straumējums (stream)



Viss sākās ar to, ka kāds Twitterī papļurkstēja, ka ir/top tāds Laacz veidojums, kas savāc no «Radio 101» pašlaik skanošo dziesmu nosaukumus, izmantojot icy - http://dev.laacz.lv/icy/.

Intereses dzīts, arī sāku pētīt, kas un kā.
Iepriekšējā pieredze ar interneta radio straumējumu uzbūvi man ir tuvu nullei.

Interneta uzgāju lapu SmackFu: Shoutcast Metadata Protocol , kur uzskatāmi parādīts, kas un kā notiek ar pašu straumējumu un kā no straumējuma dabūt pašlaik skanošas dziesmas nosaukumu.

Varu kaut kur kļūdīties, bet, kā es to saprotu un kā man tas strādāja, izmantojot PHP programmēšanas valodu.

Pieslēdzoties interneta radio straumējumam, pēc neliela datu apjoma saņemšanas tiek nosūtīts arī atskaņotas dziesmas nosaukums.
Dziesmas nosaukums tiek nosūtīts tikai tad, kad klients, tas kurš klausās interneta radio, pieslēdzas pirmo reizi vai, ja mainās dziesma straumējumā.
Ja klients pēkšņi pārtrauc pieslēgumu (vai viņam pārtrūkst pieslēgums) pie interneta radio straumējuma, bet pēc brīža atkal pieslēdzas tam, tad interneta radio serveris atkal nosūta pašreiz atskaņotas dziesmas nosaukumu.

Normālā gadījumā straumējums turpinās un dziesmas nosaukumi no interneta radio servera tiek sūtīti tikai tad, kad mainās atskaņotā dziesma.


Dziesmas nosaukumi tiek nosūtīti tai pat straumējumā speciālā datu fragmentā, ko sauc par MetaData.


Tehniski tas varētu būt šādi:

1. Klients pieslēdzas straumējuma serverim un nosūta uz to speciālus header:

Icy-MetaData:1

un User-Agent: (kaut ko, kas nesatur mozilla, piemēram Winamp)

2. Serveris atbild aptuveni, kur headeris ir "icy-metaint:skaitlis", piemēram:

icy-metaint: 16000

icy-metaint norāda pēc cik baitiem tiks nosūtīts MetaData, kas saturēs dziesmas nosaukumu.
Piemērā tas būs pēc 16000 baitiem. Pēc MetaData turpinās straumējuma dati.


3. MetaData garumu nosaka nākošais baits, tas ir icy-metaint noteiktie baiti + 1 baits
Šajā baitā ir ierakstīts MetaData garums (hexadecimal) dalīts ar 16. Tātad MetaData garums būs šī baita vērtība reizināta ar 16.


4. Nolasot MetaData, daļa no MetaData izskatīsies šādi:

StreamTitle='Grupa - Dziesmas nosaukums';

Nolasot datus starp "StreamTitle='" un "';" dabūjam tīru dziesmas nosaukumu.


BTW, Līdzīgi izmantojot šo sistēmu, var saglabāt arī straumējuma mp3 daļas kā datnes uz sava datora.

Var PHP, var Streamripper.

Es varu noklausīties to, ko jūs klausījāties, kamēr es gulēju ;)

pirmdiena, 2009. gada 26. janvāris

someone's age in years

<?php

$dob = '1984-09-04';

$age = date('Y') - date('Y', strtotime($dob));

if (date('md') < date('md', strtotime($dob))) {

    $age--;

}

?>

svētdiena, 2008. gada 14. decembris

otrdiena, 2008. gada 30. septembris

ISPmanager PHP script from cron

Add the line below into the scheduler
/usr/local/bin/php -q /home/user/data/www/domain_name/script.php


If your script runs through a web browser, use the following line
/usr/local/bin/GET http://domain_name/required_script.php


http://www.minivds.com/technology/faq/firststeps.html
http://en.wikipedia.org/wiki/Cron

piektdiena, 2007. gada 5. oktobris

function ($a)

Man viena ideja radās.
Ņemam no PHP: PHP Manual - Manual visas iebūvētās funkcijas un izlaižam caur tām mainīgo $a. Mainīgais $a varētu būt kaut vai $a=1;
Apmēram tā:
echo($a);
chr($a);
md5($a);
include($a);

Un tādā garā. Nez kas no ta visa iznāktu? Diezgan ātri nosprāgtu ar Fatal Error. To vajadzētu kaut kā apiet.

trešdiena, 2006. gada 15. novembris

hmz

Varbūt uzlikt kādās 30 gov lapās savu addsensi? :)
Es brīnos, ka neviens to vēl nav izdarījis.
Laikam visi haGZori ir sapisušies meistarībā un neredz deguna galā brilles.

pirmdiena, 2006. gada 6. novembris

Lamerhosting

LH saviem dārgākajiem klientiem atslēdz PHP Safe Mode un PHP open_basedir.
Par velti atslēdz. Es tā saprotu, ka vienkārši atslēdz pat neparedzot nekādās aizvietotāj-papildus drošības fīčas.
Ja es būtu hosteris, tad es šādas krimināli nosliegtas fīčas atslēgtu minimāli par 100Ls katru.
Bez tam vēl jāparedz advokātu pakalpojumi, jo tiesās grūti būtu pierādīt savu taisnību, ja es pats, neievērojot programmatūras lietošanas instrukciju, esmu atslēdzis PHP drošībai paredzētās fīčas un esmu ticis nohakots lol.
Vel derētu par 1000Ls ieslēgt Register Globals, bet LH drošvien par to vēl piemaksā 1Ls. olol
Par Register Globals fīču LH gan nekas nav minēts, bet pieļauju, ka tas ir iekļauts Un-hardened PHP komplektā.
Viss satraukums jau ir par to, ka tiek darīts pretēji tam, kā tam vajadzētu būt.
Nesaprotu loģiku.