Title: [JavaScript] Captionbot Spammer (Updated to scrape derpibooru) Author: auag Pastebin link: http://pastebin.com/d6qrFwJx First Edit: Wednesday 30th of March 2016 01:51:01 PM CDT Last Edit: Last edit on: Wednesday 30th of March 2016 02:55:47 PM CDT /* INSTRUCTIONS 1. Send a request, make sure your web environment is capturing requests     1a. Open up console         1aa. For chrome, ctrl + shift + I on windows, cmd + opt + I on osx     1b. Switch to network tab     1c. Submit one of the default images     1d. Scroll down to latest request. Should say "message." Click on it.     1e. In the new window that pops up, scroll to the bottom.     1f. Look for the conversationId field; copy the string. It should be a bunch of characters like "YmasMpas" or something. 2. Paste conversationId into CONFIG.convoId 3. Make a derpibooru account 4. Get the api key from the account page (https://derpibooru.org/users/edit) (this is necessary since they block porn if you don't have it) 5. Paste it into CONFIG.key 6. Tune batchInterval. This is delay in between traversing derpibooru pages. There are 15 images per batch by default. 7. Tune urlInterval. This is delay in between sending each image url to captionbot. 8. Tune voteDelay. This is delay in between sending image url and then voting a 1 on it. Since it won't identify horse. 9. Run startCaptionbotSpam(). 10. Enjoy. */   var CONFIG = {   key: "YOUR DERPIBOORU API HERE", //derpibooru key to allow explicit images   convoId: "YOUR CONVERSATION ID HERE", //conversationId from first network request   batchInterval: 35000, //slow down so derpibooru doesn't block you   urlInterval: 4000, //slow down so microsoft doesn't block you,   voteDelay: 2000 //slow down so microsoft doesn't block you }   // always rate 1 function voteMessage(watermark) {   var settings = {     "async": true,     "url": "https://www.captionbot.ai/api/message",     "method": "POST",     "headers": {       "accept-language": "en-US,en;q=0.8",       "content-type": "application/json; charset=UTF-8",       "accept": "*/*",       "x-requested-with": "XMLHttpRequest"     },     "data": '{\"conversationId\":\"'+CONFIG.convoId+'\",\"waterMark\":\"'+watermark+'\",\"userMessage\":\"1\"}'   }     $.ajax(settings).done(function(response) {   }); }   function sendImage(url) {   var settings = {     "async": true,     "url": "https://www.captionbot.ai/api/message",     "method": "POST",     "headers": {       "accept-language": "en-US,en;q=0.8",       "content-type": "application/json; charset=UTF-8",       "accept": "*/*",       "x-requested-with": "XMLHttpRequest"     },     "data": '{\"conversationId\":\"'+CONFIG.convoId+'\",\"waterMark\":\"\",\"userMessage\":\"'+ url+'\"}'   }     $.ajax(settings).done(function(response) {     var data = JSON.parse(response);     console.log(data.UserMessage);     setTimeout(voteMessage.bind(undefined, data.WaterMark), CONFIG.voteDelay);   }); }   function iterateDerpibooru(i) {   $.get("https://derpibooru.org/search.json?q=explicit&key="+CONFIG.key+"&page="+i).done(function(response) {     var spamUrl = function(i) {       if(i < response.search.length) {         sendImage(img = response.search[i].source_url||response.search[i].image);         setTimeout(spamUrl.bind(undefined, i + 1), CONFIG.urlInterval)       }     }       spamUrl(0);   })     setTimeout(iterateDerpibooru.bind(undefined, i+1), CONFIG.batchInterval); }   function startCaptionbotSpam() {   iterateDerpibooru(1); }