阿茲貓 的 Java類比登陸QQ郵箱擷取好友名單的實現

來源:互聯網
上載者:User

 

引用

阿茲貓 的 Java類比登陸QQ郵箱擷取好友名單的實現

謹以此文,紀念我好幾天敖到1點睡覺,我是個好孩子,一般10點就鑽被窩了,夜裡好起來偷菜,hoho

其實很無聊,其實很BT,SNS網站好象一夜之間都提供邀請好友功能

但是像開心等都沒有提供對qq的讀取,因為QQ很變態,就用他開刀好了

前陣子在研究驗證碼識別,做了一些簡單的註冊機,灌水機,直到發現TMD這東西更變態,水太深,不費心了,能識別簡單的就好了

類似QQ這樣的不大可能識別出來了。只有啟用人肉識別,讓肉眼自己看好了,娃哈哈

準備工作:
1.JDK1。6 為什麼要1。6呢,這個後面再說
2.一個支援jsp的WEB環境,例如resin,tomcat等
3.要有簡單的類比登陸思路,比如我,最開始是做開心網外掛的類比登陸
當然我是個非常無聊的人,一般無聊的都是先做163啊,126郵箱的類比登陸,也是為了拿點使用者列表,沒新鮮的
類比登陸我用的是org.apache.http,實現一個可以類比登陸的client
 public WebClient() {
  currentURL = null;
  client = new DefaultHttpClient();
  client.setCookieStore(new UpdateableCookieStore());
  client.setRedirectHandler(new MemorizingRedirectHandler());
  client.getParams().setParameter("http.protocol.cookie-policy",
    "compatibility");
  List headers = new ArrayList();
  headers
    .add(new BasicHeader(
      "User-Agent",
      "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13"));
  client.getParams().setParameter("http.default-headers", headers);
 }
4.要有一些Regex常識
因為畢竟要從html裡摘錄出需要的內容,如sid什麼的,不用正則太麻煩鳥~

好了,開練
先去http://mail.qq.com/裡看看代碼,大概就是一些無聊的表單和驗證碼
把這些內容弄成一個簡單的html登陸看看,操,居然登陸不了,告訴我驗證碼不對,向人肉保證,我的眼神沒有問題
用httpwatch單獨把驗證碼弄出來分析分析,居然產生的圖片還帶了cookie,@#$%^& 咒罵半小時
沒辦法了,只能把這個圖片轉寄一下了
大概思路就是,先用伺服器請求圖片,然後response.setContentType("image/jpeg");
這就是為什麼需要一個支援jsp的web環境了。
轉寄圖片前把Cookie對象放到session裡,一會提交QQ號啊,密碼什麼的那些垃圾的時候把這個再SET給虛擬WEBCLIENT就OK了

驗證碼解決後就是表單處理了,我再操。。。頁面裡這些亂七八糟的js是幹啥的啊,居然QQ密碼在js端還做了一次RSA加密,這幫孫子怎麼想的啊,太變態了

我先想到的是把這些js改寫成java的代碼,寫了兩行就放棄了,這不是人乾的活啊

還好jdk1.6 有個擴充包,支援java讀取js, 重來沒試過,正好開開洋葷。 沒想到啊,太好用了,這麼複雜的js 都能轉換,這個版本真值得信服,哈哈

頁面裡的js代碼要稍微調整一下,有一些函數需要改寫,去掉識別瀏覽器版本和表單對象的參數

javax.script.*

 ScriptEngineManager factory = new ScriptEngineManager();
 ScriptEngine engine = factory.getEngineByName("JavaScript");
 engine.eval(new FileReader("/home/html/qq.js"));
 engine.eval("var t=checkInput('"+pp+"','"+ts+"');");
 String p=engine.get("t").toString();

一定要用1.6啊,我以前一直用的1.5,就是為了這個把機器裡的JDK換成1.6了,哈哈

所有的前端問題都解決了,後面就是享受時間了
得到uin,password,verifycode提交
解析出加密的passwd後,post到http://mail.qq.com/cgi-bin/loginpage , 記得先把驗證碼的cookie對象set過去
String regex = "sid=(.*?)\";";
得到最需要的sid,後面的就是隨便請求裡面的串連了,想幹啥就幹啥,想吃啥就吃啥
我當時可能太激動了,得到了sid居然還是進不去,告訴我session time out,鬱悶了1個晚上,不應該啊
最後才發現,我只是把sid print出來了,忘了set了,日。。。。

好爽,輕鬆拿到好友名單,下面一個問題就是如何騙使用者輸入QQ號和密碼了,順便友情提示一下大家,千萬別相信類似開心啊,校內啊這些SNS網站, 不記錄你密碼都見了鬼了!!哈哈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.