package fb; import java.net.MalformedURLException; /** * * @author sharma */ public class login { public static void main (String[] args) { try { BasicApi fb = new BasicApi ("NAME@hotmail.com", "781899"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { // e.printStackTrace(); } } }***********************************************************************************
package fb; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.CookieHandler; import java.net.CookieManager; import java.net.CookieStore; import java.net.HttpCookie; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.net.UnknownServiceException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.logging.Logger; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * * @author sharma */ public class BasicApi { Map<String,String> cookies = new HashMap<String, String>(); private static final String SET_COOKIE = "Set-Cookie"; private static final String COOKIE_VALUE_DELIMITER = ";"; private static final String SET_COOKIE_SEPARATOR="; "; private static final String COOKIE = "Cookie"; private static final char NAME_VALUE_SEPARATOR = '='; private String FB_BASE = new String ("http://www.facebook.com"); private String FB_LOGIN_PAGE = new String ("/login.php"); private String FB_HOME_PAGE = new String ("/home.php"); private String FB_CHAT_WIN = new String ("/presence/popout.php"); private String USER_AGENT = new String ("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.2"); private String FB_POST_FORM = new String ("<input type=\"hidden\" id=\"post_form_id\"name=\"post_form_id\" value="); private String user = null; private String post_form_id = null; private String channel = null; private int seq = -1; private URL basePage = null; private CookieHandler cm = null; OutputStreamWriter out = null; URL login = null; HttpURLConnection loginConn = null; public BasicApi (String uname, String password) throws MalformedURLException { user = new String (""); post_form_id = new String (""); channel = new String (""); basePage = new URL (FB_BASE); initCookieManager(); this.login(uname, password); this.getInfos(); this.MyupdateStatus("this assignment is done"); } public void login (String uname, String password) { try { System.out.println("--------------LOGIN:----------------"); login = new URL (basePage, FB_LOGIN_PAGE); HttpURLConnection.setFollowRedirects(false); //Sets whether HTTP redirects should be automatically followed by this class loginConn = openConnection(login); System.out.println ("Response Code :" + loginConn.getResponseCode()); // Gets the status code from an HTTP response message loginConn.getContent(); loginConn.disconnect(); printCookies(loginConn); loginConn = openConnection(login); loginConn.setRequestMethod("POST"); //Get the request method loginConn.setDoOutput(true); // A URL connection can be used for input and/or output. Set the DoOutput flag to true if // you intend to use the URL connection for output, false if not. The default is false. out = new OutputStreamWriter(loginConn.getOutputStream()); // Returns an output stream that writes to this connection out.write("email=" + uname + "&pass=" + password); out.flush(); // Flush the stream. out.close(); loginConn.disconnect(); System.out.println ("Response Code :" + loginConn.getResponseCode()); //Gets the status code from an HTTP response message. For example, in the case of the following status lines: HTTP/1.0 200 OK HTTP/1.0 401 Unauthorized System.out.println ("Request Method :" +loginConn.getRequestMethod()); //Get the request method. printCookies(loginConn); System.out.println("-------------------END LOGIN----------------------"); } catch (MalformedURLException e) { System.out.println ("error: " + e.getCause()); } catch (UnknownServiceException e) { System.out.println ("Error: "); } catch (IOException e) { System.out.println ("Error: "); e.printStackTrace(); } } public void getInfos () { try { System.out.println ("------------------------GET INFOS-------------------"); URL infopage = null; HttpURLConnection infoConn = null; BufferedReader read = null; String line = null; int pfStart = -1, pfEnd = -1; CookieStore cs = ((CookieManager)cm).getCookieStore(); for (HttpCookie c : cs.getCookies()){ if (c.getName().equals("c_user")){ user += c.getValue(); break; } } if (this.user.equals("")) System.out.println("Login "); else System.out.println("user id: " + user); infopage = new URL(basePage, FB_CHAT_WIN); infoConn = openConnection(infopage); read = new BufferedReader(new InputStreamReader (infoConn.getInputStream())); while ((line = read.readLine()) != null){ if (line.startsWith(FB_POST_FORM)){ pfStart = line.indexOf("value="); pfStart = line.indexOf("\"", pfStart); pfStart ++; pfEnd = line.indexOf("\"", pfStart); post_form_id = line.substring(pfStart, pfEnd); } } if (post_form_id == null) System.out.println("impossibile post_form_id"); else System.out.println("post form: " + post_form_id); System.out.println ("----------------END GET INFOS--------------"); } catch (MalformedURLException e) { System.out.println ("error: " + e.getCause()); } catch (IOException e) { System.out.println ("errore "); e.printStackTrace(); } } void getCookies(URLConnection fbConn) { String headerName; for(int i=1;(headerName = fbConn.getHeaderFieldKey(i))!=null;i++) { if(headerName.equalsIgnoreCase(SET_COOKIE)) { StringTokenizer tokens = new StringTokenizer(fbConn.getHeaderField(i),COOKIE_VALUE_DELIMITER); while(tokens.hasMoreTokens()) { String token=tokens.nextToken(); try { String key = token.substring(0,token.indexOf(NAME_VALUE_SEPARATOR)); key = key.replaceAll(" ",""); if(!key.equalsIgnoreCase("expires") && !key.equalsIgnoreCase("path") && !key.equalsIgnoreCase("domain")) { String value=token.substring(token.indexOf(NAME_VALUE_SEPARATOR)+1,token.length()); cookies.put(key, value); } } catch(Exception e){} } } } } void setCookies(URLConnection fbConn) { StringBuffer cookieNames=new StringBuffer(); Iterator it=cookies.keySet().iterator(); while(it.hasNext()) { String key=(String) it.next(); String value=cookies.get(key); cookieNames.append(key); cookieNames.append("="); cookieNames.append(value); if(it.hasNext()) { cookieNames.append(SET_COOKIE_SEPARATOR); } } //System.out.println(cookieNames.toString()); fbConn.setRequestProperty(COOKIE,cookieNames.toString()); } void viewCookiews() { System.out.println("Cookie Size : " +cookies.size()); Iterator it=cookies.keySet().iterator(); while(it.hasNext()) { String key=(String) it.next(); String value=cookies.get(key); System.out.println(key + " : "+value); } } String MygetPageContent(URLConnection fbConn) { String contents = ""; BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(fbConn.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { contents += inputLine + "\r\n"; } in.close(); } catch (IOException ex) { ex.printStackTrace(); Logger.getLogger(BasicApi.class.getName()).log(Level.SEVERE, null, ex); } finally { try { in.close(); } catch (IOException ex) { ex.printStackTrace(); Logger.getLogger(BasicApi.class.getName()).log(Level.SEVERE, null, ex); } } return contents; } Map<String,String> MygetStatusUpdateParamiters(String html) { Map<String,String> paramiters=new HashMap<String, String>(); Document doc = (Document) Jsoup.parse(html); Element dom = doc.getElementById("composer_form"); Elements inputs=dom.getElementsByTag("input"); for(int i=0;i<inputs.size();i++) { System.out.println(inputs.get(i).attr("name")+" : "+inputs.get(i).attr("value")); paramiters.put(inputs.get(i).attr("name"),inputs.get(i).attr("value")); } return paramiters; } void MyupdateStatus(String status) { URLConnection fbStatusCon = null; URL fbStatusURL = null; OutputStreamWriter wr = null; try { URL url = new URL("http://m.facebook.com/profile.php?refid=7"); // URL url = new URL("http://www.facebook.com/profile.php?id=100001616376884"); URLConnection con = url.openConnection(); setCookies(con); con.connect(); getCookies(con); String profilePageContent=MygetPageContent(con); //System.out.println(getPageContent(con)); System.out.println("view Profile page successfull"); fbStatusURL = new URL("http://www.facebook.com/ajax/updatestatus.php"); fbStatusCon = fbStatusURL.openConnection(); setCookies(fbStatusCon); fbStatusCon.setDoOutput(true); wr = new OutputStreamWriter(fbStatusCon.getOutputStream()); Map<String , String> parameters=new HashMap<String,String>(); parameters=MygetStatusUpdateParamiters(profilePageContent); Iterator it=parameters.keySet().iterator(); String data="status="+URLEncoder.encode(status, "UTF-8"); while(it.hasNext()) { String key=(String) it.next(); String value=parameters.get(key); data+="&"+key+"="+URLEncoder.encode(value, "UTF-8"); } /*String post_form_id = "80a8de91bf3c0e413e96e5b964ae4753"; String fb_dtsg = "1pghv"; String update = "Share"; String charset_test = "€,´,€,´,?,?,?"; String data="post_form_id="+URLEncoder.encode(post_form_id, "UTF-8"); data+="&fb_dtsg="+URLEncoder.encode(fb_dtsg, "UTF-8"); data+="&status="+URLEncoder.encode(status, "UTF-8"); data+="&update="+URLEncoder.encode(update, "UTF-8"); data+="&charset_test="+URLEncoder.encode(charset_test, "UTF-8");*/ wr.write(data); wr.flush(); wr.close(); fbStatusCon.connect(); getCookies(fbStatusCon); //System.out.println("Contents : \n"+getPageContent(fbStatusCon)); System.out.println("status Update successfull"); viewCookiews(); } catch (IOException ex) { } } public void send (String to, String text) { } private void initCookieManager () { cm = new MyCookieManager(); java.net.CookieHandler.setDefault(cm); } private HttpURLConnection openConnection (URL u) throws IOException { HttpURLConnection conn = (HttpURLConnection)u.openConnection(); setUserAgent(conn); return conn; } private void setUserAgent (URLConnection u) { u.setRequestProperty("User-Agent", USER_AGENT); } private void printCookies (HttpURLConnection conn) { CookieStore cs = ((CookieManager)cm).getCookieStore(); int i = 0; System.out.println ("----------Cookies--------------"); for (i = 0; i < 99; i++) { String s = conn.getHeaderFieldKey(i); if (s != null && s.equals("Set-Cookie")) { System.out.println ("Set-Cookie: " + conn.getHeaderField(i)); } } System.out.println("-------------------------------"); for (HttpCookie c : cs.getCookies()) System.out.println (c.toString()); System.out.println("-------------------------------------------"); } }
**********************************************************************************
package fb; import java.io.IOException; import java.net.*; import java.util.*; /** * * @author sharma * */ public class MyCookieManager extends CookieManager { public MyCookieManager () { super(); } public MyCookieManager(CookieStore store, CookiePolicy cookiePolicy) { super (store, cookiePolicy); } @Override public void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException { Map <String, List<String>> newHeader = new HashMap <String, List<String>>(); List <String> temp = null, newList = new LinkedList <String>(); temp = responseHeaders.get("Set-Cookie"); if (temp != null) { for (String s : temp) newList.add(s.replace("; httponly", "")); newHeader.put("Set-Cookie", newList); newList = new LinkedList <String>(); } temp = responseHeaders.get("Set-Cookie2"); if (temp != null) { for (String s : temp) newList.add(s.replace("; httponly", "")); newHeader.put("Set-Cookie2", newList); } super.put(uri, newHeader); } }
You done very well job. But status not update. please help....
ReplyDelete