forked from LittleChest/dns-packet
parent
0cf5761579
commit
428d5adc8f
53
examples/doh.js
Normal file
53
examples/doh.js
Normal file
@ -0,0 +1,53 @@
|
||||
|
||||
'use strict'
|
||||
|
||||
/*
|
||||
* Sample code to make DNS over HTTPS request using POST
|
||||
* AUTHOR: Tom Pusateri <pusateri@bangj.com>
|
||||
* DATE: March 17, 2018
|
||||
* LICENSE: MIT
|
||||
*/
|
||||
|
||||
const packet = require('..')
|
||||
const https = require('https')
|
||||
|
||||
function getRandomInt(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
const encodedPacket = packet.encode({
|
||||
type: 'query',
|
||||
id: getRandomInt(1, 65534),
|
||||
flags: packet.RECURSION_DESIRED,
|
||||
questions: [{
|
||||
type: 'A',
|
||||
name: 'google.com'
|
||||
}]
|
||||
})
|
||||
|
||||
const options = {
|
||||
hostname: 'dns.google.com',
|
||||
port: 443,
|
||||
path: '/experimental',
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/dns-udpwireformat',
|
||||
'Content-Length': Buffer.byteLength(encodedPacket)
|
||||
}
|
||||
}
|
||||
|
||||
const request = https.request(options, (response) => {
|
||||
console.log('statusCode:', response.statusCode)
|
||||
console.log('headers:', response.headers)
|
||||
|
||||
response.on('data', (d) => {
|
||||
console.log(packet.decode(d))
|
||||
})
|
||||
})
|
||||
|
||||
request.on('error', (e) => {
|
||||
console.error(e)
|
||||
})
|
||||
request.write(encodedPacket)
|
||||
request.end()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user