test-spiderfoot-direct.js•2.88 kB
// Test script to directly interact with SpiderFoot API
import axios from 'axios';
const SPIDERFOOT_BASE_URL = 'http://localhost:5001';
async function testSpiderFootAPI() {
const client = axios.create({
baseURL: SPIDERFOOT_BASE_URL,
timeout: 10000,
headers: {
'Accept': 'application/json'
}
});
try {
// 1. Test ping endpoint
console.log('1. Testing ping endpoint...');
const pingResponse = await client.get('/ping');
console.log('Ping response:', pingResponse.data);
// 2. List available modules
console.log('\n2. Listing available modules...');
const modulesResponse = await client.get('/modules');
console.log('Available modules:', modulesResponse.data);
// 3. List event types
console.log('\n3. Listing event types...');
const eventTypesResponse = await client.get('/eventtypes');
console.log('Event types:', eventTypesResponse.data);
// 4. List scans
console.log('\n4. Listing scans...');
const scansResponse = await client.get('/scanlist');
console.log('Scans:', scansResponse.data);
// 5. Start a new scan (example with minimal parameters)
console.log('\n5. Starting a new scan...');
const scanParams = new URLSearchParams();
scanParams.append('scanname', 'test-scan-' + Date.now());
scanParams.append('scantarget', 'example.com');
scanParams.append('modulelist', 'sfp_dnsresolve,sfp_whois');
scanParams.append('typelist', 'DOMAIN_NAME');
scanParams.append('usecase', 'investigate');
const startScanResponse = await client.post('/scannew', scanParams, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
console.log('Scan started:', startScanResponse.data);
if (startScanResponse.data.status === 'RUNNING' && startScanResponse.data.id) {
const scanId = startScanResponse.data.id;
console.log(`\n6. Getting info for scan ${scanId}...`);
// 6. Get scan info
const scanInfoResponse = await client.get('/scaninfo', {
params: { id: scanId }
});
console.log('Scan info:', scanInfoResponse.data);
// 7. Get scan results
console.log(`\n7. Getting results for scan ${scanId}...`);
const scanResultsResponse = await client.get('/results', {
params: { id: scanId }
});
console.log('Scan results:', scanResultsResponse.data);
}
} catch (error) {
console.error('\n❌ Error testing SpiderFoot API:');
if (error.response) {
console.error('Status:', error.response.status);
console.error('Data:', error.response.data);
} else if (error.request) {
console.error('No response received. Is the SpiderFoot server running?');
} else {
console.error('Error:', error.message);
}
process.exit(1);
}
}
// Run the test
testSpiderFootAPI();