philos Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Καλημέρες! Μια ερώτηση σχετικά με PHP. Λοιπόν, χρησιμοποιώ την ακόλουθη function για να getάρω τον κώδικα ενός url/web page: function get_web_page($url) {$options = array(CURLOPT_RETURNTRANSFER => true, // return web pageCURLOPT_HEADER => false, // don't return headersCURLOPT_FOLLOWLOCATION => true, // follow redirectsCURLOPT_MAXREDIRS => 10, // stop after 10 redirectsCURLOPT_ENCODING => "", // handle compressedCURLOPT_USERAGENT => "test", // name of clientCURLOPT_AUTOREFERER => true, // set referrer on redirectCURLOPT_CONNECTTIMEOUT => 30, // time-out on connectCURLOPT_TIMEOUT => 120, // time-out on response);$ch = curl_init($url);curl_setopt_array($ch, $options);$content = curl_exec($ch);curl_close($ch);return $content;}// $url_final = a url$response = get_web_page($url_final);if (strpos($response, 'something') === false){ exit('0');} Όπως καταλαβαίνετε, θέλω "πάση θησεία" να εντοπίσω αν μέσα στον κώδικα της σελίδας, υπάρχει το 'something'. Το πρόβλημα: αν το 'something' επιστρέφεται δυναμικά μέσω JavaScript μέσα στη σελίδα (που κανονικά θα φόρτωνε ένας browser), δεν εντοπίζεται στο $response. Καμιά ιδέα για να πετύχω αυτό που θέλω; Θα προτιμούσα μία server side λύση (χωρίς να χρειαστεί πχ να κάνω εγκατάσταση στον server κάποιο ιδιαίτερο package), καθώς ουσιαστικά μιλάμε για ένα σύστημα verification, οπότε αν είναι εντελώς javascript, δεν θα έχει νόημα και ασφάλεια για μένα. Ψάχνοντας στο διαδίκτυο διάβασα για το PhantomJS, αλλά αν δεν κάνω λάθος, είναι καθαρά JavaScript script;
The King Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Όπως καταλαβαίνετε, θέλω "πάση θησεία" ... Ξέρω ότι γίνομαι σπαστικός αλλά επειδή όλα είναι γλώσσες, το σωστό στη συγκεκριμένη γλώσσα είναι "πάσει θυσία" Όσον αφορά στην ερώτηση σου, μέσω cURL παίρνεις μόνο το markup του HTML κώδικα οπότε δεν πρόκειται να πάρεις JS output values. Σου προτείνω να χρησιμοποιήσεις το PhantomJS (ναι προφανώς είναι JS library) όπως σωστά ανέφερες και να το ενσωματώσεις για να κάνει dump τα δεδομένα που χρειάζεσαι και μετά να βρεις το string που θες παρόλο που θα προτιμούσες server-side λύση. 1
philos Δημοσ. 31 Μαρτίου 2017 Μέλος Δημοσ. 31 Μαρτίου 2017 Thanks για τη διόρθωση Λοιπόν, κοιτάξτε πως έχει το πρόβλημα: πρόκειται για μια λειτουργία όπου ένας χρήστης του διαδικτύου, επιβεβαιώνει ότι του ανήκει ένα account σε εξωτερικό site. Έτσι, του ζητείται να τοποθετήσει έναν συγκεκριμένο κωδικό/συμβολοσειρά, ας πούμε στο about της σελίδας του. Εν συνεχεία, η PHP μέσω cURL τσεκάρει αν η συμβολοσειρά βρίσκεται στο about κι αν ναι, γίνονται διάφορες διεργασίες μέσω PHP (εισαγωγή σε βάση δεδομένων κτλ). Πολύ φοβάμαι ότι αν κάνω το verification μέσω JavaScript, ο χρήστης θα μπορεί να ξεγελάσει εύκολα το σύστημα. Κάνω λάθος; Αν έχετε υπόψιν σας κάποιον τρόπο να το κάνω ας πούμε μέσω συνδυασμού JavaScript (PhantomJS) + PHP και παράλληλα να μην "μπάζει", μπορείτε να μου πείτε.
lion2486 Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Ίσως κάτι τέτοιο; https://github.com/jonnnnyw/php-phantomjs
The King Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Thanks για τη διόρθωση Λοιπόν, κοιτάξτε πως έχει το πρόβλημα: πρόκειται για μια λειτουργία όπου ένας χρήστης του διαδικτύου, επιβεβαιώνει ότι του ανήκει ένα account σε εξωτερικό site. Έτσι, του ζητείται να τοποθετήσει έναν συγκεκριμένο κωδικό/συμβολοσειρά, ας πούμε στο about της σελίδας του. Εν συνεχεία, η PHP μέσω cURL τσεκάρει αν η συμβολοσειρά βρίσκεται στο about κι αν ναι, γίνονται διάφορες διεργασίες μέσω PHP (εισαγωγή σε βάση δεδομένων κτλ). Πολύ φοβάμαι ότι αν κάνω το verification μέσω JavaScript, ο χρήστης θα μπορεί να ξεγελάσει εύκολα το σύστημα. Κάνω λάθος; Αν έχετε υπόψιν σας κάποιον τρόπο να το κάνω ας πούμε μέσω συνδυασμού JavaScript (PhantomJS) + PHP και παράλληλα να μην "μπάζει", μπορείτε να μου πείτε. Κοίτα, γενικότερα το όλο σκεπτικό μπάζει εύκολα, πχ με το να μπει κάποιος κωδικός/συμβολοσειρά στη σελίδα αφού θα είναι ορατό από οποιοδήποτε. Παίξε με crossdomain ajax requests και validators μεταξύ των 2 websites και βεβαιώσου ότι στο website που έχει τα accounts επιτρέπει τα CORS (προϋποθέτει να έχεις πρόσβαση στον κώδικα του). Είναι αρκετή δουλειά αλλά είναι πιο ασφαλής τρόπος. Αυτή τη γενική κατεύθυνση μπορώ να σου δώσω, πρέπει να το ψάξεις λίγο όμως.
defacer Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Λοιπόν, κοιτάξτε πως έχει το πρόβλημα: πρόκειται για μια λειτουργία όπου ένας χρήστης του διαδικτύου, επιβεβαιώνει ότι του ανήκει ένα account σε εξωτερικό site. Σε ποιό site? Δεν υποστηρίζει αυτό το site OAuth? Ούτε έχει κάποιο σχετικό JS API? Έτσι, του ζητείται να τοποθετήσει έναν συγκεκριμένο κωδικό/συμβολοσειρά, ας πούμε στο about της σελίδας του. Και γιατί δε μπορεί να το κάνει αυτό χωρίς javascript?
djcat Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Ξέρω ότι γίνομαι σπαστικός αλλά επειδή όλα είναι γλώσσες, το σωστό στη συγκεκριμένη γλώσσα είναι "πάσει θυσία" πάση θυσία, με ήττα... δοτική του θηλυκού πάσα.
The King Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Όπως καταλαβαίνετε, θέλω "πάση θησεία" ... Ξέρω ότι γίνομαι σπαστικός αλλά επειδή όλα είναι γλώσσες, το σωστό στη συγκεκριμένη γλώσσα είναι "πάσει θυσία" πάση θυσία, με ήττα... δοτική του θηλυκού πάσα. σωστά αλλά φαντάζομαι εννοείς το γράμμα ήτα με ένα ταυ και όχι την ήττα με δύο ταυ ... ακόμα γελάω και με τους τρεις μας 1
philos Δημοσ. 31 Μαρτίου 2017 Μέλος Δημοσ. 31 Μαρτίου 2017 Σε ποιό site? Δεν υποστηρίζει αυτό το site OAuth? Ούτε έχει κάποιο σχετικό JS API? Και γιατί δε μπορεί να το κάνει αυτό χωρίς javascript? Το addon που έχω φτιάξει, λειτουργεί εντάξει με facebook και youtube (page verification με έλεγχο της συμβολοσειράς που έχει βάλει ο ιδιοκτήτης στο about του για να επιβεβαιώσει στο site ότι του ανήκει το account). Το πρόβλημα υπάρχει με το twitch.tv όμως, που για κάποιο λόγο - μάλλον λόγω του ότι η σελίδες του φορτώνουν με JavaScript), δε μπορεί να εντοπίσει τη συμβολοσειρά με cURL get content.
djcat Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 σωστά αλλά φαντάζομαι εννοείς το γράμμα ήτα με ένα ταυ και όχι την ήττα με δύο ταυ ... ακόμα γελάω και με τους τρεις μας Όχι, μιλούσα για την ήττα τη δική σου ... Άστα να πάνε Πύρρο! 1
defacer Δημοσ. 31 Μαρτίου 2017 Δημοσ. 31 Μαρτίου 2017 Δεν ξέρω τι ακριβώς κάνεις αλλά γενικά για να αποδείξεις ότι ελέγχεις ένα account η πιο σωστή και στρωτή μέθοδος είναι μέσω OAuth, που υποστηρίζουν όλα τα site που λες (π.χ. Twitch). Αυτή είναι η στάνταρ μέθοδος που δουλεύει, με μικρές παραλλαγές, "παντού". 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα