DomainDB behöver serverkraft!

Permalänk
Medlem

Jeppe
Jag har faktiskt för mig att det här existerade redan innan jspindel blev släppt. Men det kan ju vara så att conio körde den innan han släppte den.

Visa signatur

Jag är konstig. Är du?
----
http://posera.nu/

Permalänk
Medlem

conio... nu finns till en början en service för hämtning av en batch

http://domaindb.mine.nu/domaindb/getbatch.php

den förväntar sig två fält med POST:
"vhash" och "check"

$random = rand();
$vhash = md5("lösenord".$random);
$check = $random;

jag har PM:at dig lösenordet!

Output på sidan blir:

oiwefn|net
okw.oiwefo|net
oiwefp|co.uk

osv...

OBS! Den plockar INTE bort de domäner den skickar ut med batchen från databasen. Jag har gjort så med flit för att du ska kunna fixa med spindeln tills du får till den som du vill ha den! Skriv här sen när den beter sig rätt så tar jag bort delete-blocken så är det bara att köra hårt sen!

//Jeppe

Visa signatur

/Jeppe

Permalänk
Medlem

Jeppe
Jag ser att du kämpar hårt med det här! Har du inget annat som du måste hinna med, typ som skola eller jobb?

Visa signatur

Jag är konstig. Är du?
----
http://posera.nu/

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe
conio... nu finns till en början en service för hämtning av en batch

den förväntar sig två fält med POST:
"vhash" och "check"

$random = rand();
$vhash = md5("lösenord".$random);
$check = $random;

jag har PM:at dig lösenordet!

Bra! Nu börjar det hända saker 8-). Det är dock några saker som jag undrar över. Vad ska jag skicka in i check? Jag har ju lite svårt att gissa ditt randomvärde 8-).

Dessutom, hashen som jag skickar är ju binär, och det är ju alltid lite pyssel med att skicka binärdata, så jag undrar om du kan ändra så att du förutsätter att jag skickar en vhash (och eventuellt check) i hexformat, så att du gör en hex2bin() innan du behandlar datat.

Citat:

Ursprungligen inskrivet av Freakie
Btw, jeppe, har du koll på varför det blir som det blir när man söker på "hardcoded.se" i sökrutan?
21 st resultat som alla verkar lite skumma. [/B]

Citat:

Ursprungligen inskrivet av Sirjeppe
[B]Tycker det luktar som en bugg i JSpindel!...

Conio, kan det vara så att din spindel lägger in alla domäner som den inte hittat någon titel på med den senast hittade titeln istället för att strunta i att lägga in dom?

Jag tycker det verkar orimligt att buggen är i JSpindel. Varje domän som genomsöks blir ett eget Work-objekt som har en egen titel, så den SKA inte påverka andra sökningar.

I Freakies fall så har jag faktiskt alibi 8-). Första gången JSpindel började köras var lördag till söndag-natt vilket var den 3-4:e, medans hardcoded.se grejerna var inlagt nästan en vecka innan. Det tyder på att det är en gammal bugg, och troligtvis i någon annan spindel.

Om du lägger till ett klient-fält så kan ju jag börja putta in en liten identifiering där så att vi till slut får reda på vilken klient det är som buggar.

Sedan har jag märkt att jag har en liten "bugg" eller feature om man jämför php-spindeln. JSpindel uppdaterar inte i checkeddomains såvidare inte domänen faktiskt fanns och hade en titel. Jag tyckte det kändes mest rätt, men det får du avgöra. Ska jag även lägga in icke befintliga domäner?

//C

Permalänk
Medlem

Freakie - jag kan inte släppa det :P... Har en annan sida som jag måste göra klar som jag dessutom får betalt för men det är typ 100 gånger tråkigare än att peppa er med det här projektet

Conio - Hahaha :D... Alibi.... Det är alltid bra Jag tror dig... Och din feature är helt rätt... Det är i checklist som alla domäner ska lagras även om dom inte hittades inte i checkeddomains.

Rand-värdet sätter du själv i spindeln! Det är ju bara till för att md5hashen ska ändras vid varje överföring så att man inte ska kunna ta reda på lösenordet om man lyckas "kapa" en överföring.

Vad är problemet med att överföra binärt? Hur överförs resultatdatan? Varför skulle du vilja överföra det hexadecimalt istället?

Har lagt till ett "clientversion"-fält i checkeddomains nu... varchar(16) är det och indexerat.

Fråga till alla: Vem är det som lägger in sidor som kollas med www. framför i address-fältet i databasen? Det behövs inte, för både DomainDB och spindlarna lägger till det själva så länge inte en subdomän påträffats... Det förstör faktiskt... Då kommer den nämligen att lägga in t.ex. tidningsbutiken.se igen om någon söker på det ordet eftersom det inte finns (den letar ju inte efter www.tidningsbutiken | se) | == avskiljare mellan "address" och "top" i databasen.

//Jeppe

Visa signatur

/Jeppe

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe

Rand-värdet sätter du själv i spindeln! Det är ju bara till för att md5hashen ska ändras vid varje överföring så att man inte ska kunna ta reda på lösenordet om man lyckas "kapa" en överföring.

Vad är problemet med att överföra binärt? Hur överförs resultatdatan? Varför skulle du vilja överföra det hexadecimalt istället?

När det handlar om formulär så är det ju TEXT man skickar, inte binärdata. Alltså enkodas binärdata lite olika beroende på hur klienten och servern hanterar det. I php så skiljer man inte på en byte och ett tecken, i Java så är det väldigt stor skillnad (vissa behöver representera ett tecken med fler än en byte).

Jag tycker mig ha provat enkelt enligt beskrivningen som du gett, men det verkar inte fungera. Om du bara kunde ändra till hex2bin på de två fälten så skulle jag vara jätteglad 8-).

Citat:

Och din feature är helt rätt... Det är i checklist som alla domäner ska lagras även om dom inte hittades inte i checkeddomains.

Nej du missförstod mig, jag gör inte så idag, så jag måste ändra det. Tyvärr kommer det slöa ner spindeln något enormt, nu när jag måste skicka tillbaks hundratals gånger mer data 8-(.

Jag är också nästan klar med JSpindel som hittar nya domäner. Det fungerar ganska bra nu, förutom att den väldigt snabbt hittar tusentals domäner att kräla, och jag får en enorm backlog att kolla, måste hantera det så man inte åker på out-of-memory-situationer 8-).

Så, om vi får ordning på hämta, så vill jag väldigt gärna ha en spara ganska snart också 8-).

Dessutom, bara så du tänker på det, så måste ju varje person som kör spindlar ha ett eget användarnamn/lösenord så att de har var sin identifikation. Att bara hårdkoda ett lösenord i klienten är ju inte mycket bättre än att köra öppet.

//C

Permalänk
Medlem

Ang. enskilt lösenord så är det precis anledningen till varför jag lagt in ett logga in/registrerablock på SDC (som iof inte funkar än, men det kommer)...

Hundratals gånger mer data blir det inte, men det blir 100 rader mer data à 16 byte per rad eller nåt... 1,56KB mer data att skicka... + en 16-bitars sträng med spindelversionsinfo.

Wow! :D... Häftigt att du är så nära "Hunter" Nu börjar det hända grejor med andra ord... It's noooow or neeeveeeeeer (skrålar högt). Om du vill bli av med out of memory-grejen (och för att snabba upp sökandet) så tycker jag att dom nya domänerna du hittat ska åka in i databasen direkt när dom hittas... (eller kanske om en batch om 100 domäner)! Och nu kommer vi till varför det skulle finnas statuslevel i databasen (som jag pratade om förut)... Jag förstod nämligen att det snabbt skulle komma att bli många domäner och om man då i databasen kan kolla vilka som blivit kravlade så behöver man ju inte kravla dom igen efter nya domäner.

//Jeppe

Visa signatur

/Jeppe

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe

Hundratals gånger mer data blir det inte, men det blir 100 rader mer data à 16 byte per rad eller nåt... 1,56KB mer data att skicka... + en 16-bitars sträng med spindelversionsinfo.

Mjo, men du räknar helt fel, det är det som är problemet 8-).

Nu blir det ju

SELECT * FROM checklist WHERE address=? AND top=?

Hämta svar

INSERT INTO checklist (address,top,checkdate) VALUES (?,?,?) || UPDATE checklist SET checkdate=? WHERE id=?

(Hämta svar)

SELECT * FROM checkeddomains WHERE address=? AND top=?

Hämta svar

INSERT INTO checkeddomains (title,address,top,created,updated,clientversion) VALUES (?,?,?,?,?,?) || UPDATE checkeddomains SET title=?, updated=?, clientversion=? WHERE id=?

(Hämta svar)

för varje domän. Det tar kanske en tredjedels sekund för varje operation, vilket gör att det tar väl över tio sekunder att skicka 100 poster. Fördelen förut med JSpindel var ju att den bara skickade svar då den hittade något (förstår fortfarande inte vad du vill ha med domännamn som inte finns, men men, det är ditt system 8-) ).

Angående webhämtningen. Tänker du fixa hex2bin? Kan man dessutom få kolla på koden hur du gjort just nu, så jag kan anpassa min implementation därefter?

//C

EDIT: Jag räknade lite. Om det tar 12 sekunder att uppdatera ungefär, innebär det att varje operation tar 12/100/4 sekunder vilket är 0.03 sekunder per operation eftersom det är 400 operationer på 12 sekunder. Inte så dålig prestanda alls, om det inte vore så att jag behöver MYCKET mer data 8-).

Permalänk
Medlem

Tänkte ge en uppdatering på statusen för c# spindeln.
Den är färdig och fungerar mycket bra. Tyvärr så ville jag göra lite förändringar i databasen så jag gjorde en egen variant istället men bra går det, en spindel sammlade 1 000 000 länkar och 15 000 sidor på 6 timmar. Syvärr så gjorde min dåliga indexering att en insättning i länk tabellen tar en evighet när den har så många poster.
Sen har jag inte riktigt tid att fortsätta och göra den kompatibel med domaindb databasen men om det kommer en webservice eller något annat som abstraherar bort databasen från spindeln så kommer jag nästan säkert släppa en spindel jag med.

Permalänk
Medlem

Golfin - det kommer!

conio - alla domäner som sökts måste ju lagras så att dom inte kollas igen i onödan... Har satt en månads mellanrum mellan kollerna på alla sidor.

Visa signatur

/Jeppe

Permalänk
Medlem

Jag har fortfarande problem med ditt clientversionfält 8-(.

UPDATE command denied to user 'domaindb'@'<mittip>' for column 'clientversion' in table 'checkeddomains'

Var du sugen på att visa källkoden till din getbatch?

Jag är beredd att hjälpa till med php-koden för sparandet om du vill också.

//C

Permalänk

mina ser ut såhära:

Post: 99/100: http://www.fbbj.net

Invalid address 'http://www.fbbj.net'

visst är det rätt?

Visa signatur

//Patrik
Intel Core 2 Duo, 2048MB RAM, Gainward 8800 GTS 640MB, 500GB HDD, Samsung SyncMaster 940BW

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av isac.agge
mina ser ut såhära:

Post: 99/100: http://www.fbbj.net

Invalid address 'http://www.fbbj.net'

visst är det rätt?

Jodå det ser rätt ut.

Alla JSpindelanvändare: Nu finns det en ny version ute. Den fixar förhoppningsvis de sista av de buggarna som gjorde att det tog en halv evighet att avsluta programmet.

Det är också den första versionen som har "hunter"-funktionalitet. Just nu görs inget med informationen som hittas, men det finns ett fält som visar hur många (unika) addresser den har hittat på sidorna den har genomsökt.

//C

Permalänk
Medlem

conio... f'låt... hade helt enkelt glömt bort att ge rättigheter till den cellen för eran spindelanvändare i mysql :/.. .haha... men nu är det fixat!

Det var för att du använde UPDATE och inte INSERT som det sket sig... Får jag fråga varför du väljer att fråga databasen igen istället för att bara stoppa in clientversion-cellen direkt i din första INSERT när du lägger in raden?

Sen kan du väl lägga in så länge (innan servicen är fixad) att samtidigt som du sparar batchen på servern så lägger den in de nya domäner som den hittat i uncheckeddomains-tabellen så kollas dom ju efterhand :)??

Härlisch att du vill hjälpa till med sparandephpkoden! Har lagt upp getbatch.phps på samma ställe nu så du kan kolla källkoden! Hehe... det är ju verifyconnection.php som du vill ha källkoden till!... Finns här: http://domaindb.mine.nu/domaindb/verifyconnection.phps

//Jeppe

Visa signatur

/Jeppe

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe
conio... nu finns till en början en service för hämtning av en batch

den förväntar sig två fält med POST:
"vhash" och "check"

$random = rand();
$vhash = md5("lösenord".$random);
$check = $random;

//Jeppe

Du tror inte att det blir lite säkrare om du byter ut md5 mot sha1? Till md5 så finns det ju riktigt stora regnbågstabeller som kan knäcka det där ganska lätt... Och för att förhöja säkerheten ännu mer så blir det nog bättre att din server skickar rand() till conio så att han inte får bestämma det.

Visa signatur

Jag är konstig. Är du?
----
http://posera.nu/

Permalänk
Medlem

Bra tankar Freakie... conio... har Java bra stöd för sha1 så det inte blir fel om vi använder det istället?

Visa signatur

/Jeppe

Permalänk
Medlem

Jeppe
Java har stöd för sha1

Visa signatur

Jag är konstig. Är du?
----
http://posera.nu/

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Freakie
Du tror inte att det blir lite säkrare om du byter ut md5 mot sha1? Till md5 så finns det ju riktigt stora regnbågstabeller som kan knäcka det där ganska lätt... Och för att förhöja säkerheten ännu mer så blir det nog bättre att din server skickar rand() till conio så att han inte får bestämma det.

Visst kan jag ändra, men i det stora hela så har det ingen större betydelse. MD5 och SHA1 är som du vet en hash eller digestalgoritm. Det man listat ut runt MD5 är ju att man lätt utifrån en hash kan få en (eller några stycken) möjliga "lösenord". Även om man tittade i en tabell så skulle det nog vara mycket orimligt att hitta just mitt lösenord som dessutom slutar på samma extradata som man angett.

Den stora hålet i våran säkerhetslösning just nu är ju att man tillåts skicka samma hash om och om igen, då klienten är den som bestämmer extradata (då räcker det ju med att bara avlyssna så är problemet löst).

För att få det riktigt säkert så ska det ju vara servern som genererar extradatat och dessutom ska man blanda in en extra källa, och det är tid.

Har man en hash på lösenord+extradata+tid så blir det genast rejält jobbigt. Sha1 har ju större datamängd så det blir ju "säkrare" av det (såvidare man inte hittar begränsningar i algoritmen).

Fast egentligen, hur många kommer köra spindlar, hur många kommer avlyssna våra spindlar för att föra in falsk data 8-). Låter väldigt orimligt, men det skadar ju inte att vara seriösa 8-).

Sirjeppe: Jag gör inte en update efter min insert. Jag vill vid mitt update-tillfälle (dvs ifall jag har inspekterat en adress som redan fanns i checkeddomains) sätta clientversion också. Är inte det rimligt? Om XSpindel gör en uppdatering på titeln, borde inte XSpindel stå som klient också då? Utifall att någon gör fel så kommer det ju bara bli dumt ifall clientversion betyder spindelversionen som la upp posten för första gången.

Nu ska jag titta på get-källkoden 8-).

//C

Permalänk
Medlem

Ahaa.. bra tänk conio! ... klart att den ska sätta den senaste spindelversionen som kravlat domänen

Visa signatur

/Jeppe

Permalänk
Medlem

Yes!

Där fick jag ihop alla behörigheten mot din getbatch.php.

Ska modda JSpindel att använda den på en gång.

Vänta lite med att lägga dit delete-delen 8-).

//C

EDIT: Ojoj vilken skillnad 8-)

Permalänk
Medlem

är det Jspindel 1.1.0 som är senaste?

Visa signatur

Server: Hp Microserver Gen8, Xeon E3-1265V2 , 16gb RAM

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av shibby
är det Jspindel 1.1.0 som är senaste?

Japp, det stämmer. Det kommer en 1.1.1 om/när Sirjeppe lägger upp min webbtjänst.

Sirjeppe: Nu har jag gjort klart spara-tjänsten. Den finns att ladda ner på http://www.linuxpower.nu/~conio/jspindel/savebatch.txt.

Den går egentligen ut på att klienten skickar lika många rader som poster ska uppdateras. Varje rad innehåller fyra fält som är #-separerade. Varje fält är base64-enkodat (onödigt på domänerna, men jag kör samma på allt), då titeln kan innehålla svårenkodade tecken. Allt data som skickas till servern är UTF-8-format.

Det är ju bara att lägga på säkerhetsinkluden.

Jag har JSpindel redo för test så fort du har lagt upp den 8-)

//C

EDIT: I fallet då man har sökt en domän men inte hittat en titel så är det tredje fältet tomt.

Fälten som skickas är följande (från vänster till höger), address, top, title och clientversion.

EDIT2: Här har du en kul sql till SDC 8-). select clientversion,count(*) from checkeddomains group by clientversion;

EDIT3: Tog bort användarnamn/lösenord från källkoden. Onödigt att google äter upp den 8-).

Permalänk
Medlem

Så...

Conio... nu är savebatch.php upplagd... ska läsa igenom scriptet lite mer noggrannt bara så jag förstår vad du har gjort! Du har inte implementerat någon säkerhet i det än, vi får ta tag i det lite senare... Nu ska jag dricka öl!

Visa signatur

/Jeppe

Permalänk
Medlem

JSpindel/1.1.1 släppt!
Den stora förbättringen är den kraftigt uppsnabbade hämtningen och sparandet (sparandet går 8-10 gånger snabbare)

Sirjeppe: Lägger du till så att getbatch.php deletar raderna som hämtas så fort som möjligt?

När det gäller säkerheten så skickar klienten en vhash och check precis som vid getbatch, så jag tänkte att det bara var att inkludera den säkerhetsdelen i den sparasidan.

Lycka till med öldrickandet! Men ge fan i ölen du har lovat bort till mig 8-)

//C

EDIT: Fixade en trasig bbcode-tag.

Permalänk
Medlem

Hahaha :)... jag sparar en öl till dig ;)...

Har tagit bort deleteblocken nu! Jag kastar in säkerhetsgrejen i savebatch också så... Säg till fort om det inte funkar!

[edit]Har även lagt till den där sql-raden till SDC, TACK [/edit]

//Jeppert

Visa signatur

/Jeppe

Permalänk
Medlem

Fler än jag som var på pubben ikväll alltså!

Visa signatur

Jag är konstig. Är du?
----
http://posera.nu/

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe

Har tagit bort deleteblocken nu! Jag kastar in säkerhetsgrejen i savebatch också så... Säg till fort om det inte funkar!

Det fungerar utmärkt här fortfarande.

Det verkar som om din bot får stryk i uppläggningsligan 8-)

Freakie: Vilken tur vissa har då! En annan måste lägga sig snart så man orkar upp tidigt för att jobba (med annat än JSpindel). Nåja, jag tycker det är roligt iaf, även om ett gäng öl inte hade suttit dumt nu 8-).

//C

EDIT: Jag hade tänkt att vänta på att få säga grattis till 300 000 domäner, men det får nog blir nog att stoppa in en tvätt istället. Grattis i förskott!

EDIT2: Nu är vi där! Grattis allihoppa och Sirjeppe i synnerhet!

Permalänk
Medlem

conio... när jag har kört JSpindel ett tag så slutar den fungera :/... jag måste stänga ner och starta om den för att den ska fortsätta... Detta händer när jag checkat ungefär 15000 domäner...

Visa signatur

/Jeppe

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sirjeppe
conio... när jag har kört JSpindel ett tag så slutar den fungera :/... jag måste stänga ner och starta om den för att den ska fortsätta... Detta händer när jag checkat ungefär 15000 domäner...

Jo jag har också märkt av det. Analys påbörjad (har precis kommit hem från jobbet).

//C

Permalänk
Medlem

Hahahaha... går all ledig tid åt JSpindel eller?

Visa signatur

/Jeppe