← back to Zendesk Chat Analyzer
sg-block-test.js
58 lines
#!/usr/bin/env node
// Load the DW storefront through a Singapore-geolocated Browserbase browser and
// determine whether Blockify actually blocks it. Reports final URL + block verdict.
const { chromium } = require('/Users/macstudio3/Projects/all-designerwallcoverings/node_modules/playwright-core');
const fs = require('fs');
function env(k){ for(const l of fs.readFileSync('/Users/macstudio3/Projects/secrets-manager/.env','utf8').split('\n')) if(l.startsWith(k+'=')) return l.slice(k.length+1).trim().replace(/^["']|["']$/g,''); }
const KEY = env('BROWSERBASE_API_KEY'), PROJ = env('BROWSERBASE_PROJECT_ID');
const STORE = 'https://www.designerwallcoverings.com/';
(async () => {
// 1. create SG-geolocated session
const r = await fetch('https://api.browserbase.com/v1/sessions', {
method: 'POST',
headers: { 'X-BB-API-Key': KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ projectId: PROJ, proxies: [{ type: 'browserbase', geolocation: { country: 'SG', city: 'SINGAPORE' } }] }),
});
const sess = await r.json();
if (!sess.id) { console.log('SESSION FAIL:', JSON.stringify(sess).slice(0,300)); process.exit(1); }
console.log('BB session:', sess.id, '(SG proxy)');
const connectUrl = sess.connectUrl || `wss://connect.browserbase.com?apiKey=${KEY}&sessionId=${sess.id}`;
let verdict = 'UNKNOWN';
try {
const browser = await chromium.connectOverCDP(connectUrl);
const ctx = browser.contexts()[0] || await browser.newContext();
const page = ctx.pages()[0] || await ctx.newPage();
// confirm we're actually on a SG IP
let ipgeo = {};
try { await page.goto('https://ipapi.co/json/', { timeout: 30000 }); ipgeo = JSON.parse(await page.locator('body').innerText()); } catch(e){}
console.log('exit IP country:', ipgeo.country_name || '?', '| ip:', ipgeo.ip || '?');
await page.goto(STORE, { waitUntil: 'domcontentloaded', timeout: 45000 });
await page.waitForTimeout(6000); // let Blockify client script run + redirect
const finalUrl = page.url();
const title = await page.title().catch(()=> '');
const bodytext = (await page.locator('body').innerText().catch(()=> '')).slice(0, 2000).toLowerCase();
await page.screenshot({ path: '/Users/macstudio3/sg-block-test.png' }).catch(()=>{});
const blockedSignals = ['access denied','you have been blocked','not available in your','restricted in your',
'blockify','access to this store','region is restricted','cannot access','blocked'];
const hit = blockedSignals.find(s => bodytext.includes(s) || finalUrl.toLowerCase().includes('block'));
const storeLoaded = title.toLowerCase().includes('designer wallcoverings') && bodytext.includes('wallcovering') && !hit;
if (hit) verdict = 'BLOCKED ✅ (Singapore hit a block: "'+hit+'")';
else if (storeLoaded) verdict = 'NOT BLOCKED ❌ (Singapore loaded the normal store)';
else verdict = 'INCONCLUSIVE (title="'+title+'")';
console.log('final URL:', finalUrl);
console.log('title:', title);
console.log('body sample:', bodytext.slice(0,180).replace(/\n/g,' '));
console.log('VERDICT:', verdict);
await browser.close();
} catch (e) {
console.log('NAV ERROR:', String(e).slice(0,200));
}
})();