node-wreq
Version:
Browser fingerprint bypass library using Rust for TLS/HTTP2 impersonation
63 lines • 3.24 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_test_1 = require("node:test");
const node_assert_1 = __importDefault(require("node:assert"));
const node_wreq_1 = require("../node-wreq");
(0, node_test_1.describe)('HTTP', () => {
(0, node_test_1.before)(() => {
console.log('🔌 HTTP Test Suite\n');
});
(0, node_test_1.test)('should return available browser profiles', () => {
const profiles = (0, node_wreq_1.getProfiles)();
node_assert_1.default.ok(Array.isArray(profiles), 'Profiles should be an array');
node_assert_1.default.ok(profiles.length > 0, 'Should have at least one profile');
node_assert_1.default.ok(profiles.some((p) => p.includes('chrome')) ||
profiles.some((p) => p.includes('firefox')) ||
profiles.some((p) => p.includes('safari')), 'Should include standard browser profiles');
console.log('Available profiles:', profiles.join(', '));
});
(0, node_test_1.test)('should make a simple GET request', async () => {
const response = await (0, node_wreq_1.request)({
url: 'https://httpbin.org/get',
browser: 'chrome_131',
timeout: 10000,
});
node_assert_1.default.ok(response.status >= 200 && response.status < 300, 'Should return successful status');
node_assert_1.default.ok(Object.keys(response.headers).length > 0, 'Should have response headers');
node_assert_1.default.ok(response.body.length > 0, 'Should have response body');
const body = JSON.parse(response.body);
node_assert_1.default.ok(body.headers['User-Agent'], 'Should have User-Agent header');
console.log('Status:', response.status);
console.log('User-Agent:', body.headers['User-Agent']);
});
(0, node_test_1.test)('should work with different browser profiles', async () => {
const testUrl = 'https://httpbin.org/user-agent';
const browsers = ['chrome_137', 'firefox_139', 'safari_18'];
for (const browser of browsers) {
const response = await (0, node_wreq_1.request)({
url: testUrl,
browser: browser,
timeout: 10000,
});
node_assert_1.default.ok(response.status === 200, `${browser} should return status 200`);
const data = JSON.parse(response.body);
node_assert_1.default.ok(data['user-agent'], `${browser} should have user-agent`);
console.log(`${browser}:`, data['user-agent'].substring(0, 70) + '...');
}
});
(0, node_test_1.test)('should handle timeout errors', async () => {
await node_assert_1.default.rejects(async () => {
await (0, node_wreq_1.request)({
url: 'https://httpbin.org/delay/10',
browser: 'chrome_137',
timeout: 1000, // 1 second timeout for 10 second delay
});
}, {
name: 'RequestError',
}, 'Should throw an error on timeout');
});
});
//# sourceMappingURL=http.spec.js.map