Skip to content

Instantly share code, notes, and snippets.

@Bradsta
Created September 30, 2012 04:01
Show Gist options
  • Save Bradsta/3805806 to your computer and use it in GitHub Desktop.
Save Bradsta/3805806 to your computer and use it in GitHub Desktop.
Cleverbot java responder
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Random;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
*
* @author Bradsta
* Credits: Cleverbot.com
*
*/
public class CleverbotResponder {
private static final Random rand = new Random();
//Sends a message to cleverbot, returns the result
public static String respond(String s, String sessionID) {
try {
InetAddress add = InetAddress.getByName("cleverbot.com");
Socket sock = new Socket(add, 80);
String hash = hashed(s);
//System.out.println(hash);
String data = "stimulus=" + s + "&start=y&sessionid=" + sessionID + "&vText8=&vText7=&vText6=&vText5=&vText4=&vText3=&vText2=&icognoid=" +
"wsf&icognocheck=" + hash + "&fno=0&prevref=&emotionaloutput=&emotionalhistory=&asbotname=" +
"&ttsvoice=&typing=&lineref=&sub=Say&islearning=1&cleanslate=false";
BufferedWriter buff = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF8"));
buff.write("POST /webservicemin HTTP/1.1" + "\r\n");
buff.write("Host: cleverbot.com" + "\r\n");
buff.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" + "\r\n");
buff.write("Accept-Language: en-us,en;q=0.5" + "\r\n");
buff.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" + "\r\n");
buff.write("Content-Type: application/x-www-form-urlencoded; charset=UTF-8" + "\r\n");
buff.write("Referer: http://cleverbot.com/" + "\r\n");
buff.write("Content-Length: " + data.length() + "\r\n");
buff.write("\r\n");
buff.write(data);
buff.flush();
BufferedReader read = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF8"));
String line = null;
try {
while ((line = read.readLine()) != null) {
if (line.contains("Server: ")) {
for (int i=0; i<2; i++) line = read.readLine();
return line.substring(line.lastIndexOf("}") + 1);
}
}
} finally {
sock.close();
buff.close();
read.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//Misspells a word around every 500 chars.
//Just incase someone would ever want to send these responses to anyone
//Credit: Adam [Smitteh]
public static String humanString(String message){
String newMessage = "";
for(char key : message.toCharArray()){
int num = rand.nextInt(500);
char[] keys = getAdjecentKeys(key);
char bestChar = '0';
for(int x = 0; x < keys.length; x++){
if(x == num){
bestChar = keys[x];
}
}
if(bestChar == '0')
bestChar = key;
newMessage += bestChar;
}
return newMessage;
}
//Method for getting adjacent keys to a char, used to misspelling words.
private static char[] getAdjecentKeys(char key) {
char[][] keys = {{'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '_', '='},
{'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'o', 'p', '[', '['},
{'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\''},
{'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/'}};
char[] ret = new char[4];
for(int x = 0; x < keys.length; x++){
for(int y = 0; y < keys[x].length; y++){
if(keys[x][y] == key){
if(y > 0)
ret[0] = keys[x][y - 1];
if(y < keys[x].length -1)
ret[1] = keys[x][y + 1];
if(x > 0 && y < keys[x - 1].length)
ret[2] = keys[x-1][y];
if(x < keys.length - 1 && y < keys[x + 1].length)
ret[3] = keys[x+1][y];
break;
}
}
}
return ret;
}
//Creates the hash to send to cleverbot.com according to the stimulus
//Creates a JavaScript engine to do so
private static String hashed(String stimulus) { // check
try {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String function = longAssFunction;
engine.eval(function);
Invocable inv = (Invocable) engine;
return (String) inv.invokeFunction("HH", "stimulus=" + stimulus + "&start=y&sessionid=&vText8=&vText7=&vText6=&vText5=&vText4=&vText3=&vText2=&icognoid=wsf&icognocheck=");
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return null;
}
// Wouldn't have hard coded it if it didn't need a lot of editing.
private static String longAssFunction = "var T=true;" + "\r\n" +
"var F=false;" + "\r\n" +
"var B=\'\';" + "\r\n" +
"var tts=F;" + "\r\n" +
"var ttsVoice=\'GEORGE\';" + "\r\n" +
"var ttsDirect=T;var ttsDirectAIS=F;ttsPW=T;" + "\r\n" +
"var avatar=T;var avatarImmedStart=T;var typ=T;var dBTyp=F;var msg=0;var emo=F;var opnr=F;var script=T;var learn=T;doReacOnly=F;var reacMS=3000;dynAds=T;" + "\r\n" +
"var bSay=\'Think About It!\';var bLog=\'Thoughts So Far\';var bNew=\'\';var bPass=\'Think For Me!\';var cLearn=\'Learn\';var cTTS=\'Speak\';" + "\r\n" +
"var B2=\'\';var ttsVoice2=\'\';var scriptRef=\'\';var lineRef=\'\';var eB=\'\';var cSlate=F;var emoOut=\'\';" + "\r\n" +
"var ff=\'Tahoma, Arial, Sans-serif;\';" + "\r\n" +
"var textBotFont=\'font: bold 12px \'+ff+\';color: 0863BB;\';var tbf2=\'font: bold 12px \'+ff+\';color: 539EEB;\';var tbf3=\'font: bold 12px \'+ff+\';color: 9BC3F7;\';" + "\r\n" +
"var textUserFont=\'font: 12px \'+ff+\';color: 000000;\';var tuf2=\'font: 12px \'+ff+\';color: 666666;\';var tuf3=\'font: 12px \'+ff+\';color: 999999;\';" + "\r\n" +
"var inputFont=\'font: 12px \'+ff+\';color: 000000;\';" + "\r\n" +
"var reactionFont=\'font: italic 9pt \'+ff+\';color: 990000;\';" + "\r\n" +
"var emotionFont=\'font: italic 9pt \'+ff+\';color: 009900;\';" + "\r\n" +
"var msgFont=\'font: 9pt \'+ff+\';color: 666666;\';" + "\r\n" +
"var textBorderWidth=\'0\';" + "\r\n" +
"var textPadding=\'5\';" + "\r\n" +
"var textSpacing=\'1\';" + "\r\n" +
"var textBorderColor=\'FFFFFF\'" + "\r\n" +
"var textBotBgColor=\'FFFFFF\';" + "\r\n" +
"var textUserBgColor=\'FFFFFF\';" + "\r\n" +
"var textRows=7;" + "\r\n" +
"var textInputSize=\'55\';" + "\r\n" +
"var textTDw=\'300\';" + "\r\n" +
"var textTDh=\'48\';" + "\r\n" +
"var bNewLine=T;" + "\r\n" +
"var bSayBelow=T;" + "\r\n" +
"var textDyn=T;" + "\r\n" +
"var avatarBorderWidth=\'0\';" + "\r\n" +
"var avatarPadding=\'0\';" + "\r\n" +
"var avatarSpacing=\'0\';" + "\r\n" +
"var avatarBorderColor=\'FFFFFF\'" + "\r\n" +
"var avatarBgColor=\'FFFFFF\';" + "\r\n" +
"var avatarTDw=\'300\';" + "\r\n" +
"var avatarTDh=\'1\';" + "\r\n" +
"var avatarSwf=\'\';" + "\r\n" +
"var avatarMode=\'Txt\';" + "\r\n" +
"var sayOpnr=\"\";" + "\r\n" +
"var tLoc=F;var tLocM=\'\';var tLocPrev=\'\';var tLocT=\'\';var tLocT3=\'\';var ttsWait=F;if(!tts) cTTS=\'\';if(!learn) cLearn==\'\';var si=0;var sp=F;sb=F;var started=0;var avNo=0;var avUser=F;var S=null;var P=\'POST\';var dRc=0;" + "\r\n" +
"var speaking=F;var seq=F;var delayed=F;var wasDel=0;var speakCnt=0;var typData=\'\';var typStart=F;var typSpeed=0.40;var typSlow=0;var typText=\'\';var typHalf=F;var uniN=0;var uniC=\'\';if(typ&&dBTyp){var typOn=\'on\'}else{var typOn=\'\'}" + "\r\n" +
"var req=F;var wait=F;var waitCnt=0;var stimulus=\'\';var stimulusPrev=\'\';var reply=\'\';var replyPrev=\'\';var scriptRefX=\'\';var lineRefX=\'\';" + "\r\n" +
"var sID=\'\';var sID2=\'\';var U=\'wdhbshrvpchkdi\';var U2=\'\';var prevref=\'\';var eventCnt=0;var eventCntThis=0;var immedC=0;" + "\r\n" +
"var t8=\'\';var t7=\'\';var t6=\'\';var t5=\'\';var t4=\'\';var t3=\'\';var t2=\'\';var m8=\'&nbsp;\';var m7=m8;var m6=m8;var m5=m8;var m4=m8;var m3=m8;var m2=m8;" + "\r\n" +
"var emoHist=\'\';var reaction=\'\';var reaction1=\'\';var reaction2=\'\';var reacDeg=\'\';var emotion=\'\';var emotion1=\'\';var emotion2=\'\';var emoDeg=\'\';var reacMSst=3;" + "\r\n" +
"var ty=\' TYPE=hidden VALUE=\"\';var tv=\"vText\";tw=\'&\'+tv;var tr=\'<tr><td height=\';var tt=\' width=\';var tb=\' bgcolor=\';var te=\'</td></tr>\';var eb=\'\\r<!-- \';var ee=\' Response !-->\\r\';var ti=\'<td valign=middle align=left><input type=button style=\"\'+inputFont;if(1==1){ti+=\';padding:2px;margin-right:2px;overflow:visible;width:1px;\" id=\'}else{ti+=\';padding:0px;margin-right:2px;\" id=\'}" + "\r\n" +
"var reacOnly=F;U=U.replace(/h/g,\'e\').replace(\'k\',\'m\').replace(\'p\',\'i\').replace(/d/g,\'\');if(B2!=\'\') U2=U+\'-\'+B2;if(B!=\'\') U+=\'n-\'+B;var R=0;var logUrl=\'\';var mx2=\'\';" + "\r\n" +
"var bD=new Array();var bGET=new Array();var bPOST=new Array();var bL=new Array();var uL=new Array();var bR=new Array();var bE=new Array();var bR2=new Array();var bE2=new Array();var bT=new Array();var uT=new Array();var prevU=\'\';var lR=\'\';var lU=\'\';var lP=\'\';var ttsT=\'\';var dL=new Array();var dD=new Array();var dT=new Array();var divert=\'\';var divertState=0;var origDom=\'cleverbot.com\';var oD=origDom;if(origDom.indexOf(\'1\')!=0&&origDom.indexOf(\'jabberwacky.com\')!=0&&origDom.indexOf(\'clev\')!=0&&origDom.indexOf(\'aipe\')!=0&&F) D.domain=D.domain.substring(D.domain.indexOf(\'.\')+1);var brDelT=\'\';var brDelState=0;var delWait=F;var autoT=\'\';var pgC=0;" + "\r\n" +
"var noScr=(scriptRef==\'\'&&lineRef==\'\');var lC=\'\';var lCA=\'\';var lCtype=1;var lCinput=T;var lCsay=T;var lCpass=noScr;var lClog=noScr;var lCnew=noScr;var lCback=F;var lCforward=F;var lChtml=\'\';var lChidden=new Array();var lCdisplay=new Array();var lCdisab=F;var stt=F;var g=\'&icogno\';var aMOrig=avatarMode;if(avatarMode==\'SWFMR\'||avatarMode==\'SWFMT\') avatarMode=\'SWFMP\';var prevmrR=F;var prevmrT=\'\';var prevmrC=0;var prmpt=\'\';var hC=0;var hN=\'0123456789\';var reqW=0;var fno=0;var fbs=new Date().getTime();fbs=fbs/1000;var fbp=\'\';var fbc=0;var fbf=(Math.random()*4)+1;if(Math.random()<0.8) fbf=-1;var iC=0;" + "\r\n" +
"\r\n" +
"function HA(a,b,c,d,e,f,g){return H8(b^c^d,a,b,e,f,g)}function HB(a,b,c,d,e,f,g){return H8(c^(b|(~d)),a,b,e,f,g)}function HC(x,y){var l=(x&0xFFFF)+(y&0xFFFF);var m=(x>>16)+(y>>16)+(l>>16);" + "\r\n" +
"return(m<<16)|(l&0xFFFF)}function HD(n,c){return (n<<c)|(n>>>(32-c))}function HE(){var r=\'\';for(var i=0;i<26;i++){r+=HF(65+i)}return r}function HF(i){return String.fromCharCode(i)}function H(s){" + "\r\n" +
"var p=1;if(s.indexOf(\'-\')==0){s=s.substring(1);p=-1}var r=0;var c=hN+hA+hA.toLowerCase();var l=s.length;for(var i=0;i<l;i++){r+=c.indexOf(s.substr(l-i-1,1))*Math.pow(62,i)}return r*p}" + "\r\n" +
"function H0(a,b,c,d,x,s,t){return H8((b&d)|(c&(~d)),a,b,x,s,t)}function HH(s){var o=H3(H2(H4(s)));return o}function H2(s){var o=H6(H7(H5(s),s.length*8),oD);return o}function H3(s){" + "\r\n" +
"try{hC}catch(e){hC=0}var h=hC?hN+\'ABCDEF\':hN+\'abcdef\';var o=\'\';var x;for(var i=0;i<s.length;i++){x=s.charCodeAt(i);o+=h.charAt((x>>>4)&0x0F)+h.charAt(x&0x0F)}return o}function H4(s){" + "\r\n" +
"var o=\'\';var i=8;var x,y;while(++i<29){x=s.charCodeAt(i);y=i+1<29?s.charCodeAt(i+1):0;if(0xD800<=x&&x<=0xDBFF&&0xDC00<=y&&y<=0xDFFF){x=0x10000+((x&0x03FF)<<10)+(y&0x03FF);i++}if(x<=0x7F) o+=HF(x);" + "\r\n" +
"else if(x<=0x7FF) o+=HF(0xC0|((x>>>6)&0x1F),0x80|(x&0x3F));else if(x<=0xFFFF) o+=HF(0xE0|((x>>>12)&0x0F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F));" + "\r\n" +
"else if(x<=0x1FFFFF) o+=HF(0xF0|((x>>>18)&0x07),0x80|((x>>>12)&0x3F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F))}return o}function H5(s){var o=Array(s.length>>2);for(var i=0;i<o.length;i++)o[i]=0;" + "\r\n" +
"for(var i=0;i<s.length*8;i+=8)o[i>>5]|=(s.charCodeAt(i/8)&0xFF)<<(i%32);return o}var hA=HE();function H6(s,d){var o=\'\';for(var i=0;i<s.length*32;i+=8)o+=HF((s[i>>5]>>>(i%32))&0xFF);" + "\r\n" +
"return o}function H7(e,l){e[l>>5]|=0x80<<((l)%32);e[(((l+64)>>>9)<<4)+14]=l;var a=H(\'1tFkIL\');var b=H(\'-IOAOV\');var c=H(\'-1tFkIM\');var d=H(\'IOAOU\');for(var i=0;i<e.length;i+=16){" + "\r\n" +
"var oa=a;var ob=b;var oc=c;var od=d;a=H9(a,b,c,d,e[i+0],7,H(\'-k4tC4\'));d=H9(d,a,b,c,e[i+1],12,H(\'-QMZXm\'));c=H9(c,d,a,b,e[i+2],17,H(\'f19oJ\'));b=H9(b,c,d,a,e[i+3],22,H(\'-18gikk\'));" + "\r\n" +
"a=H9(a,b,c,d,e[i+4],7,H(\'-BwEc5\'));d=H9(d,a,b,c,e[i+5],12,H(\'1JDPju\'));c=H9(c,d,a,b,e[i+6],17,H(\'-1bhWlp\'));b=H9(b,c,d,a,e[i+7],22,H(\'-35mDH\'));a=H9(a,b,c,d,e[i+8],7,H(\'1vmt4K\'));" + "\r\n" +
"d=H9(d,a,b,c,e[i+9],12,H(\'-28XJ3J\'));c=H9(c,d,a,b,e[i+10],17,H(\'-AwR\'));b=H9(b,c,d,a,e[i+11],22,H(\'-2AhX2w\'));a=H9(a,b,c,d,e[i+12],7,H(\'1y7vr0\'));d=H9(d,a,b,c,e[i+13],12,H(\'-2jGYv\'));" + "\r\n" +
"c=H9(c,d,a,b,e[i+14],17,H(\'-1deFPO\'));b=H9(b,c,d,a,e[i+15],22,H(\'1LgNKD\'));a=H0(a,b,c,d,e[i+1],5,H(\'-BDfFG\'));d=H0(d,a,b,c,e[i+6],9,H(\'-1ANWEK\'));c=H0(c,d,a,b,e[i+11],14,H(\'hYyNl\'));" + "\r\n" +
"b=H0(b,c,d,a,e[i+0],20,H(\'-PIple\'));a=H0(a,b,c,d,e[i+5],5,H(\'-lTfSl\'));d=H0(d,a,b,c,e[i+10],9,H(\'2ZVid\'));c=H0(c,d,a,b,e[i+15],14,H(\'-ihIaN\'));b=H0(b,c,d,a,e[i+4],20,H(\'-RRav2\'));" + "\r\n" +
"a=H0(a,b,c,d,e[i+9],5,H(\'cT8sw\'));d=H0(d,a,b,c,e[i+14],9,H(\'-170zWc\'));c=H0(c,d,a,b,e[i+3],14,H(\'-Cg9vN\'));b=H0(b,c,d,a,e[i+8],20,H(\'1Gk3h7\'));a=H0(a,b,c,d,e[i+13],5,H(\'-1Zljdz\'));" + "\r\n" +
"d=H0(d,a,b,c,e[i+2],9,H(\'-3TgTI\'));c=H0(c,d,a,b,e[i+7],14,H(\'1tRGCv\'));b=H0(b,c,d,a,e[i+12],20,H(\'-26NqgI\'));a=HA(a,b,c,d,e[i+5],4,H(\'-1aTm\'));d=HA(d,a,b,c,e[i+8],11,H(\'-2CsW0l\'));" + "\r\n" +
"c=HA(c,d,a,b,e[i+11],16,H(\'20SNrG\'));b=HA(b,c,d,a,e[i+14],23,H(\'-2O9cy\'));a=HA(a,b,c,d,e[i+1],4,H(\'-1fbsyK\'));d=HA(d,a,b,c,e[i+4],11,H(\'1O8vhx\'));c=HA(c,d,a,b,e[i+7],16,H(\'-AWS2K\'));" + "\r\n" +
"b=HA(b,c,d,a,e[i+10],23,H(\'-1C5NRo\'));a=HA(a,b,c,d,e[i+13],4,H(\'k6Zpm\'));d=HA(d,a,b,c,e[i+0],11,H(\'-OGNuQ\'));c=HA(c,d,a,b,e[i+3],16,H(\'-mtcyJ\'));b=HA(b,c,d,a,e[i+6],23,H(\'590fF\'));" + "\r\n" +
"a=HA(a,b,c,d,e[i+9],4,H(\'-hKu3T\'));d=HA(d,a,b,c,e[i+12],11,H(\'-SXtZD\'));c=HA(c,d,a,b,e[i+15],16,H(\'ZuwNE\'));b=HA(b,c,d,a,e[i+2],23,H(\'-15ML3D\'));a=HB(a,b,c,d,e[i+0],6,H(\'-DRQxI\'));" + "\r\n" +
"d=HB(d,a,b,c,e[i+7],10,H(\'1EGJvz\'));c=HB(c,d,a,b,e[i+14],15,H(\'-1Xqsbx\'));b=HB(b,c,d,a,e[i+5],21,H(\'-3szDj\'));a=HB(a,b,c,d,e[i+12],6,H(\'1r53yd\'));d=HB(d,a,b,c,e[i+3],10,H(\'-24FAa6\'));" + "\r\n" +
"c=HB(c,d,a,b,e[i+10],15,H(\'-4PY3\'));b=HB(b,c,d,a,e[i+1],21,H(\'-2F4FI7\'));a=HB(a,b,c,d,e[i+8],6,H(\'22mENb\'));d=HB(d,a,b,c,e[i+15],10,H(\'-24RVo\'));c=HB(c,d,a,b,e[i+6],15,H(\'-1haQs0\'));" + "\r\n" +
"b=HB(b,c,d,a,e[i+13],21,H(\'1Qb49B\'));a=HB(a,b,c,d,e[i+4],6,H(\'-9qbCI\'));d=HB(d,a,b,c,e[i+11],10,H(\'-1DoHtL\'));c=HB(c,d,a,b,e[i+2],15,H(\'mdxOt\'));b=HB(b,c,d,a,e[i+9],21,H(\'-NFEHX\'));" + "\r\n" +
"a=HC(a,oa);b=HC(b,ob);c=HC(c,oc);d=HC(d,od)}return Array(a,b,c,d)}function H8(q,a,b,e,f,g){return HC(HD(HC(HC(a,q),HC(e,g)),f),b)}function H9(a,b,c,d,e,f,g){return H8((b&c)|((~b)&d),a,b,e,f,g)}";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment