संपादित 03/26/2017
कुछ बिंदु पर, PopAds generate a check value लिए क्लाइंट पक्ष जावास्क्रिप्ट का उपयोग करने के लिए बंद कर दो सर्वर साइड एक AJAX अनुरोध से लिया गया वैरिएबल का उपयोग । यह बहुत आसान PHP में दोहराने के लिए लग रहा है लेकिन जब से जे एस आसानी से बदला जा सकता है, के चूहे-बिल्ली का खेल नहीं है और हमारे लिए जे एस को संभालने के लिए एक इंजन का उपयोग करते हैं।
यहाँ में प्रवेश करें और हम क्या जरूरत है पाने के लिए एक CasperJS स्क्रिप्ट चलाने के लिए कुछ PHP कोड है। सबसे पहले, आपको संगीतकार का उपयोग करके phpcasperjs/phpcasperjs इंस्टॉल करना होगा। तुम भी स्थापित NodeJS की आवश्यकता होगी, और स्थापित करने के लिए निर्देशिका निम्नलिखित मॉड्यूल जहां इस स्क्रिप्ट को चलाने के लिए योजना: npm install phantomjs ; npm install casperjs
<?php
require_once 'vendor/autoload.php';
use Browser\Casper;
define('POPADS_EMAIL', '[email protected]');
define('POPADS_PASS', 'your password');
$casper = new Casper(__DIR__ . '/node_modules/casperjs/bin/');
//$casper->setOptions(['engine' => 'slimerjs']);
//$casper->setDebug(true);
// change the UA!
$casper->setUserAgent('Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0');
// navigate to google web page
$casper->start('https://www.popads.net/');
// wait for text if needed for 3 seconds
$casper->waitForText('Reset password', 5000);
//data[User][username]
//data[User][password]
$casper->fillFormSelectors(
'form.didEnabled',
array(
'input#UserUsername' => POPADS_EMAIL,
'input#UserPassword' => POPADS_PASS,
),
true
);
$casper->waitForText('</body>', 5000);
$casper->capturePage(__DIR__ . '/login.jpg');
// run the casper script
$casper->run();
// need to debug? just check the casper output
//$output = $casper->getOutput();
$output = $casper->getHTML();
if (strpos($output, 'PopAds - Dashboard') !== false) {
echo "Logged in!";
} else {
echo "Login failed.";
var_dump($output);
}
यहाँ एक काम कर उदाहरण है। मैंने कोड में कुछ नोट्स जोड़े।
यह अब काम नहीं करता है, संदर्भ के लिए छोड़ दिया।
बुनियादी प्रक्रिया है:
- अनुरोध लॉगिन प्रपत्र पेज
- निकालें "sid" प्रवेश फार्म से टोकन मान
- निकालें फ़ॉर्म इनपुट
- आबाद प्रपत्र अपनी प्रवेश जानकारी के साथ आदानों
- लॉगिन पोस्ट अनुरोध भेजें
में लॉग इन होने के बाद परिणामी पृष्ठ से शेष राशि निकालें
और कोड:
<?php
error_reporting(E_ALL);ini_set('display_errors', 1);
// credentials
$USERNAME = 'username';
$PASSWORD = 'password';
// login url
$LOGINURL = 'https://www.popads.net/users/login';
// initialize curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, ''); // empty file means curl will keep cookies for the lifetime of the handle
// use cookiejar if you'd like to save the cookies for more than the request
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
// set URL and request (establishes cookies, gets login sid)
curl_setopt($ch, CURLOPT_URL, $LOGINURL);
$data = curl_exec($ch);
// look for "sid" value on form action (required)
preg_match('#/users/login\?sid=([\w\d]+)#', $data, $match);
$sid = $match[1];
// extract form fields from form
$formFields = getFormFields($data);
// set username and password
$formFields['data[User][username]'] = $USERNAME;
$formFields['data[User][password]'] = $PASSWORD;
// build http post string
$post_string = http_build_query($formFields);
// update login url with sid value and post login form
curl_setopt($ch, CURLOPT_URL, $LOGINURL . '?sid=' . $sid);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
// execute login request (should be logged in at this point)
$result = curl_exec($ch);
// get balance from page
preg_match('#<h5>Current Balance:</h5>\s*<div class="overview overview_green">(.*?)</div>#is', $result, $balance);
$balance = trim($balance[1]);
// show balance
echo "Your balance is $balance<br>";
function getFormFields($data)
{
if (preg_match('/(<form.*?id=.?UserLoginForm.*?<\/form>)/is', $data, $matches)) {
$inputs = getInputs($matches[1]);
return $inputs;
} else {
die('didnt find login form');
}
}
function getInputs($form)
{
$inputs = array();
$elements = preg_match_all('/(<input[^>]+>)/is', $form, $matches);
if ($elements > 0) {
for($i = 0; $i < $elements; $i++) {
$el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]);
if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) {
$name = $name[1];
$value = '';
if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) {
$value = $value[1];
}
$inputs[$name] = $value;
}
}
}
return $inputs;
}
आउटपुट:
आपकी शेष राशि $ 0.00
डाउनलोड WireShark है और एक नियमित रूप से लॉगिन कर सकते हैं। सुनिश्चित करें कि आप अनुरोध को कैप्चर करते हैं और इसे अपने PHP में फिर से चलाते हैं;) – GuyT