vovanhoangtuan

Crawl b88ag

Mar 17th, 2021
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let request = require('request-promise-native');
  2. const CryptoJS = require("crypto-js");
  3. const cheerio = require('cheerio');
  4.  
  5.  
  6. // const fs = require('fs');
  7.  
  8. const __di = {
  9.     "na": "N/A",
  10.     "deviceCode": "39ec228afe9f09c4f00f3678c5126533d16e6859;2ccae9dbe225e09f2427963f66f9cd00",
  11.     "appVersion": "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",
  12.     "timeZone": "-420",
  13.     "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",
  14.     "screen": {
  15.       "width": 1920,
  16.       "height": 1080,
  17.       "colorDepth": 24
  18.     },
  19.     "deviceId": "2e129f946d204cb08bae7d7cce9072fa",
  20.     "href": "https://www.b88ag.com/",
  21.     "capturedDate": "637515726451497109",
  22.     "geolocation": "",
  23.     "version": "2.0.4"
  24. };
  25.  
  26. const base64EncodeJson = text => {
  27.     const word = CryptoJS.enc.Utf8.parse(JSON.stringify(text));
  28.     return CryptoJS.enc.Base64.stringify(word);
  29. };
  30.  
  31.  
  32. const encrypt = (n, t) => {
  33.     var i = CryptoJS.enc.Utf8.parse("a5s8d2e9c172" + t)
  34.         , r = i;
  35.     return CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(n), i, {
  36.         keySize: 16,
  37.         iv: r,
  38.         mode: CryptoJS.mode.CBC,
  39.         padding: CryptoJS.pad.Pkcs7
  40.     }).toString();
  41. };
  42.  
  43.  
  44. request = request.defaults({
  45.     baseUrl: 'https://www.b88ag.com',
  46.     jar: request.jar()
  47. });
  48.  
  49. const getParamLogin = (txtUserName, pass) => {
  50.     return new Promise(async (resolve, reject) => {
  51.         try {
  52.                const res = await request.get('/');
  53.             // const res = fs.readFileSync('data.html', { encoding: 'utf-8' });
  54.             const {deviceId} = __di;
  55.             const $ = cheerio.load(res);
  56.             const code = $('#code').val();
  57.             const txtPassWord = encrypt(pass, code);
  58.             const analysis = {
  59.                 "startTime": Date.now(),
  60.                 "version": "2.0.4",
  61.                 "exceptions": [],
  62.                 "executions": [],
  63.                 "storages": [],
  64.                 "devices": [],
  65.                 "enable": true
  66.             };
  67.  
  68.             const captchaResuft = {
  69.                 "success": true,
  70.                 "challenge_ts": "2021-03-17T14:15:27Z",
  71.                 "hostname": "www.b88ag.com",
  72.                 "score": 0.9,
  73.                 "action": "login"
  74.               };
  75.            
  76.             resolve({
  77.                 hidLanguage: 'en-US',
  78.                 txtUserName,
  79.                 txtPassWord,
  80.                 code,
  81.                 'detecas-analysis': JSON.stringify(analysis),
  82.                 __tk: $('#__tk').val(),
  83.                 'captcha_result': JSON.stringify(captchaResuft),
  84.                 __RequestVerificationToken: $('input[name="__RequestVerificationToken"]').val(),
  85.                 browserSize: '1920x937',
  86.                 __di: base64EncodeJson(__di),
  87.                 deviceId
  88.             });
  89.  
  90.         } catch (error) {
  91.             reject(error);
  92.         }
  93.     });
  94. };
  95.  
  96. const validateCaptcha = () => {
  97.     return new Promise(async(resolve, reject) => {
  98.         try {
  99.             const res = await request({
  100.                 uri: '/Auth/ValidateGoogleCaptcha',
  101.                 method: 'POST',
  102.  
  103.             });
  104.         } catch (error) {
  105.            
  106.         }
  107.     });
  108. };
  109.  
  110. const login = () => {
  111.     return new Promise(async(resolve, reject) => {
  112.         try {
  113.             const paramReq = await getParamLogin('SUB88UF9OPIT', '111qqq@Q');
  114.             const res = await request({
  115.                 uri: '/',
  116.                 method: 'POST',
  117.                 form: paramReq
  118.             });
  119.            
  120.             reject(res);
  121.         } catch (error) {
  122.            
  123.             resolve(error.response.body);
  124.         }
  125.     });
  126. }
  127.  
  128. login()
  129.     .then(data => console.log(data))
  130.     .catch(err => console.log(1));
Add Comment
Please, Sign In to add comment