Archive

Archive for April, 2008

Nusoap persistent connection

April 30th, 2008

Ένας από του ελληνικούς καταλόγους που θέλω να καταχωρεί αυτόματα το seo tool είναι και το topsites.gr. Για μένα είναι ο καλύτερος ελληνικός κατάλογος, αλλά δεν είναι ο δημοφιλέστερος. Το topsites.gr το έχει ένας φίλος, ο Νίκος Παπανώτας, ο οποίος μου επέτρεψε να φτιάξω ένα web service, για να το χρησιμοποιήσω για την καταχώριση των web sites.

Ξεσκονίζοντας τους κώδικες για τα web service θυμήθηκα ένα πρόβλημα που είχα συναντήσει με τον smart-publisher, ένα open source project που έχω αναπτύξει και ανήκει στην εταιρεία netwerk την οποίας τυχαίνει να είμαι ένα από τα ιδρυτικά στελέχη της. Ο smart-publisher είναι μια web based εφαρμογή σε php οι οποία βρίσκει τις διαφορές σε αρχεία & database (mysql), ανάμεσα σε ένα development και σε ένα production server και τις κάνει upload. Η επικοινωνία μεταξύ των δύο servers γίνεται με web service. Επειδή το web service αυτό μεταφέρει μεγάλη πληροφορία, για να κάνει το compare και στην συνέχεια το publish, ανοίγει πολλαπλά connections με αποτέλεσμα κάποια από αυτά να κλείνουν δημιουργώντας προβλήματα. Αυτό οφείλεται στο γεγονός ότι μπορεί να κοπεί η σύνδεση είτε από το firewall (πχ. προστασία για dos attack) στον server είτε από ένα cisco συστημένο έτσι, ώστε να προσφέρει αυξημένη προστασία στο client.

Για τα web service χρησιμοποιώ το Nusoap project, και την λύση στο παραπάνω πρόβλημα την έδωσα προσθέτοντας στο soapclient μεγαλύτερο χρόνο ανταπόκρισης στα sockets (timeout & response timeout) και κρατώντας το ίδιο connection (HTTP Persistent Connection).

Nosoap Definition:
function soapclient($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30)

Πριν:
$SoapClient=new soapclient($endpoint);

Μετά:
$SoapClient=new soapclient($endpoint, false, false, false, false, false, 10, 600);
$SoapClient->useHTTPPersistentConnection();

nuSOAP, php

Pass cookie to header location with curl

April 25th, 2008

Ξεκίνησα να φτιάξω ένα seo tool για να μπορώ να καταχωρώ ένα web site σε πολλούς ελληνικούς καταλόγους μέσα από μία μόνο φόρμα. Μέχρι τώρα αυτό που έκανα, και φαντάζομαι και πολλοί άλλοι, είναι να καταχωρώ το web site σε κάθε κατάλογο ξεχωριστά.

Σκέφτηκα λοιπών να συνδέομαι με curl στις φόρμες που έχουν το καθένα για την προσθήκη web site, και να σώζω το cookie ώστε να μπορώ να το χρησιμοποιήσω στην συνεχεία, στο submit. Πολλά από αυτά όμως έχουν captcha. Στην αρχή είπα να ψάξω να βρω κάποιο open source project με ocr για να μπορέσω να σπάσω τα captcha. Πάνω στην ερευνά μου βρήκα κάποια project που όμως δεν με ενθουσίασαν και πολύ (Pwntcha, Php Captcha Decoder).

Ένας φίλος, ο Νίκος Παπανώτας ιδρυτής του webdigity ένα community από webmasters, μου πρότεινε ένα πολύ καλό web site που έχει ένα api για captcha decoder το Captcha Killer. Αν και θα μπορούσα να το χρησιμοποιήσω, γιατί το δοκίμασα και παίζει πολύ καλά, (ο τύπος έβγαλε και μπλουζάκια), τελικά κατέληξα σε μια ιδέα που είχα να φέρω τα captcha image urls και να τα δείχνω στη δικιά μου φόρμα.

Αυτό είναι και το θέμα του post. Πως μπορείς να χρησιμοποιήσεις το curl έτσι ώστε να διαβάσει το cookie από τον header και να το στείλει απ΄ ευθείας στην επόμενη σελίδα, που υπάρχει στο header location. Περισσότερες λεπτομέρειες για τον php κώδικα βρήκα στα user comments στο επίσημο web site του php.

Αυτό που χρειάζετε είναι μια function που διαβάζει τον header, βρίσκει τα cookie και τα ξαναστέλνει στο curl, πριν αυτό τελειώσει. Αυτό ορίζετε με την εντολή
curl_setopt($ch,CURLOPT_HEADERFUNCTION,’read_header’).
Για να περάσουμε απευθείας στην σελίδα που υπάρχει στο header location χρησιμοποιούμε την εντολή curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true).
Έτσι τα αποτελέσματα που θα πάρουμε από το curl θα είναι το html της σελίδας μετά το redirect.

Μόλις τελειώσει αυτό το tool θα ανακοινώσω το url που θα βρίσκεται γιατί θα είναι free.

cURL, php , , ,

Hello World!

April 25th, 2008
<?php
echo base64_decode('SGVsbG8gd29ybGQh');
? >

php