Created
September 30, 2012 04:01
-
-
Save Bradsta/3805806 to your computer and use it in GitHub Desktop.
Cleverbot java responder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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=\' \';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