Annoyed by spammers sending you "IRS" phone calls? How about "Problems with your account"?
Well, I am.
There are several approaches to solving this issue.
I saw the recent video showing a programmer creating a simple python script to flood the spammers with many calls from different numbers to keep their lines busy.
If you haven't seen the video put on YouTube by "Project Mayham", check it out, it's pretty awesome. Fun starts about 1:55
I took a screenshot of the code the uploader wrote:
You will notice that it is written in python, and is using a popular telophony service for making the calls.As a programmer I thought, well, lets build our own!
WARNING: READ THE TWILIO TOS. This will go against Twilio's Terms Of Service.
I never tested this on a phone number that I did not own.
I am not responsible for anything you do with this.
Here is how the bot works:
Step one, head over to https://twilio.com and get the required telophony items. Refer to this guide for more info.
Alright, lets get started by firing up your favorite editor (neovim) and creating two files, one for our bot (client) and one for the server (I'll get to that shortly).Our dependencies are minimal, just the twilio and express modules.
package.json
{
"dependencies": {
"express": "^4.15.3",
"twilio": "^3.4.0"
}
}
We will start with creating the simple server used by twilio for creating the automated voice message. The server returns a TwiML (variation on XML) to the twilio server for converting into the programmable voice.
server.js
var express = require('express')
var app = express()
var PORT = 3000
app.post('/call', function (req, res) {
res.send('<?xml version="1.0" encoding="UTF-8"?><Response><Say>You have been detected for spamming</Say></Response>')
})
console.log('starting on port ', PORT)
app.listen(PORT)
Run it with: $ node server.js
You can either host it on a remote server, or use ngrok to host it on your local system.
$ ngrok http 3000
ngrok running...
https://dfdf9034.ngrok.com
Copy the URL returned by ngrok for the next step.
Our bot.js
will contain the actual code for creating the calls.
Replace the accountId
with your twilio account SID, and replace the accountToken
with your twilio auth token.
var accountId = 'your acount sid here' var accountToken = 'your account token here'
var client = twilio(accountId, accountToken) var INTERVAL = 10000 // 10 seconds
var count = 0
var call = function() {
return client.calls.create({
url: 'https://
call() setInterval(call, INTERVAL)
Save that file and start it with: `$ node bot.js`
The response should be:
number 1 status: queued number 2 status: queued number 3 status: queued ...
Each queued call is then passed to the target which receives the message: "You have been detected for spamming"
<br />
Adding support for multiple numbers is easy, just do a loop over them.
Congrats!
<div class="spacer h25"></div>
The complete source code can be found [here](https://github.com/stevelacy/anti-spam-spam-bot)