Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.81 KB | None | 0 0
  1. <?php
  2. use GuzzleHttp\Client;
  3. use Symfony\Component\DomCrawler\Crawler;
  4. use \GuzzleHttp\Cookie\CookieJar;
  5. use GuzzleHttp\TransferStats;
  6.  
  7.  
  8. require_once('vendor/autoload.php');
  9.  
  10. define('TEST_ID',19);
  11.  
  12. $client = new Client([
  13.     'base_uri' => 'http://iok.co.il',
  14.     //'read_timeout' => 1,
  15.     //'connect_timeout' => 1,
  16.     'cookies' => true,
  17.     //'proxy' => '127.0.0.1:8080'
  18. ]);
  19.  
  20. $jar = new CookieJar();
  21.  
  22. $username = generateRandomString(12);
  23. $password = generateRandomString(12);
  24. $email = $username . '@mailinator.com';
  25.  
  26. $response = $client->request('POST', '/ru/auth/register', [
  27.     'cookies' => $jar,
  28.     'form_params' => [
  29.         'username' => $username,
  30.         'email' => $email,
  31.         'password' => $password,
  32.         'company' => '',
  33.         'confirm_password' => $password,
  34.         'submit' => 'submit'
  35.     ]
  36. ]);
  37. sleep(5);
  38.  
  39. $message = getMailinatorMessage($email, 'Ok Psychometry');
  40. $matches = [];
  41. preg_match('/http:\/\/iok\.co\.il(\/ru\/auth\/activate\/[\S]*?\s)/m',$message,$matches);
  42. $link = trim($matches[1]);
  43.  
  44. $client->request('GET',$link, [
  45.     'cookies' => $jar,
  46. ]);
  47. //var_dump($email,$password);die();
  48.  
  49.  
  50. $client->request('POST', '/ru/auth/login', [
  51.     'cookies' => $jar,
  52.     'form_params' => [
  53.         'login_field' => $username,
  54.         'password' => $password,
  55.         'remember' => 'yes',
  56.         'submit' => 'submit'
  57.     ]
  58. ]);
  59.  
  60. $response = $client->request('GET','/ru/testing/testtype/' . TEST_ID, [
  61.     'cookies' => $jar,
  62. ]);
  63.  
  64. $dom = new Crawler($response->getBody()->getContents());
  65. $elem = $dom->filterXPath('//form//input')->eq(0);
  66. $csrfField = trim($elem->attr('name'));
  67. $csrfValue = trim($elem->attr('value'));
  68.  
  69. $client->request('POST','/ru/testing/testtype/go', [
  70.     'cookies' => $jar,
  71.     'form_params' => [
  72.         $csrfField => $csrfValue
  73.     ],
  74.     'on_stats' => function (TransferStats $stats) use (&$url) {
  75.         $url = $stats->getEffectiveUri();
  76.     },
  77. ]);
  78.  
  79. //var_dump($response->getBody()->getContents());die();
  80.  
  81. $response = $client->request('POST', '/ru/testing/test/getBlocks/', [
  82.     'cookies' => $jar,
  83.     'form_params' => [
  84.         'params' => 'a:0:{}'
  85.     ],
  86.     'headers' => $client->getConfig('headers') + [
  87.         'X-Requested-With' => 'XMLHttpRequest',
  88.         'Referer' => (string)$url
  89.     ],
  90. ]);
  91. //var_dump($response->getBody()->getContents());die();
  92.  
  93. $response = $client->request('POST', '/ru/testing/test/getListBlocks/', [
  94.     'cookies' => $jar,
  95.     'form_params' => [
  96.         'bl' => $response->getBody()->getContents()
  97.     ],
  98.     'headers' => $client->getConfig('headers') + [
  99.             'X-Requested-With' => 'XMLHttpRequest',
  100.             'Referer' => (string)$url
  101.         ],
  102.     'debug' => true
  103. ]);
  104. // var_dump($response->getBody()->getContents());die();
  105. foreach (json_decode($response->getBody()->getContents()) as $question) {
  106.     $response = $client->request('POST', '/ru/testing/test/getQuestions/', [
  107.         'cookies' => $jar,
  108.         'form_params' => [
  109.             'bid' => $question->id
  110.         ],
  111.         'headers' => $client->getConfig('headers') + [
  112.                 'X-Requested-With' => 'XMLHttpRequest',
  113.                 'Referer' => (string)$url
  114.             ]
  115.     ]);
  116.  
  117.     var_dump(json_decode($response->getBody()->getContents()));
  118. }
  119.  
  120. die();
  121.  
  122. function generateRandomString($length) {
  123.     $chars = range('a','z');
  124.     $res = '';
  125.     for($i = 0; $i < $length; $i++) {
  126.         $res .= $chars[mt_rand(0,count($chars) - 1)];
  127.     }
  128.  
  129.     return $res;
  130. }
  131.  
  132.  
  133. function getMailinatorMessage($email, $subject) {
  134.     $json = true;
  135.     $jar = new CookieJar();
  136.  
  137.     $client = new Client([
  138.         'cookies' => $jar,
  139.         'verify' => false,
  140.     ]);
  141.  
  142.     $username = substr($email,0,strpos($email,'@'));
  143.     try {
  144.         $json = $client->get('https://www.mailinator.com/fetch_inbox',
  145.             [
  146.                 'query' => [
  147.                     'x' => '0',
  148.                     'to' => $username,
  149.                     'zone' => 'public'
  150.                 ]
  151.             ])->getBody()->getContents();
  152.         $msgid = false;
  153.         foreach (json_decode($json)->messages as $msg) {
  154.             if (preg_match('/' . $subject . '/', $msg->subject)) {
  155.                 $msgid = $msg->id;
  156.                 break;
  157.             }
  158.         }
  159.  
  160.         sleep(2);
  161.  
  162.         $json = $client->get('https://www.mailinator.com/fetch_email',
  163.             [
  164.                 'query' => [
  165.                     'msgid' => $msgid,
  166.                     'zone' => 'public'
  167.                 ]
  168.             ])->getBody()->getContents();
  169.  
  170.  
  171.         $json = json_decode($json);
  172.     } catch(\Exception $e) {
  173.     }
  174.  
  175.     if(is_object($json) && property_exists($json->data,'parts') && !empty($json->data->parts)) {
  176.         return $json->data->parts[0]->body;
  177.     } else {
  178.         return false;
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement