بادئ ذي بدء ، تحتاج إلى حساب مطور Weibo. ما نحتاجه هو مفتاح التطبيق ، التطبيق SECRE و REDIRECT_URI. كانت الشركة في الأصل هذه الخطوة ، لذلك حفظها. هناك العديد من عمليات البحث على بايدو.
حسنًا ، لنبدأ الآن:
أولاً ، وجدت هذا الرمز عبر الإنترنت ، وكتبت الرابط هنا
كنت سعيدًا جدًا بحلها في وقت واحد ؛ لكن الخطأ " فشل تحديث الرمز المميز ". بعد قراءة الكود ، عدت 200 ، وليس 302 ، وكنت مرتبكًا بعض الشيء. بغض النظر عن الطريقة التي درست بها سبب حدوث ذلك أولاً ، وضعت عنوان URL الذي أنشأه على المتصفح وقراءته. لقد أدخلت صفحة التفويض ولم أكن بحاجة إلى تسجيل الدخول أولاً. بعد النظر إلى F12 ، كان بالفعل 200 ، لذلك أعتقد أن ذلك كان لأنني لم أسجل الدخول بنجاح ، لذلك بدأت في تسجيل الدخول إلى Weibo Backend للعثور على مثل هذا الرمز. تم نسيان العنوان الأصلي ، والمؤلف الأصلي محرج.
package com.spider.httpclient ؛ استيراد java.io.bufferedreader ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.io.inputstreamreer java.util.arraylist ؛ import java.util.date ؛ import java.util.list ؛ import javax.script.invocable ؛ import javax.script.scriptengine ؛ import javax.script.scriptenginager ؛ import javax.script.scriptexception ؛ import.conmons.codeC.Coderin.Coderin. org.apache.http.header ؛ import org.apache.http.httpentity ؛ import org.apache.http.httprespons org.apache.http.client.httpclient ؛ import org.apache.http.client.config.cookiespecs ؛ import org.apache.http.client.entity.urlencodformentity ؛ import org.apache.http.client.methods.httpget ؛ org.apache.http.client.methods.httppost ؛ استيراد org.apache.http.config.registry ؛ استيراد org.apache.http.config.registrybuilder ؛ استيراد org.apache.http.cookie.cookepec ؛ org.apache.http.impl.client.basiccookiestore ؛ import org.apache.http.impl.client.httpclients ؛ import org.apache.http.impl.cookie.defaultcookepec ؛ import org.http.impl.defaultCooke org.apache.http.message.basicnamevaluepair ؛ import org.apache.http.protocol.httpcontext ؛ import org.apache.http.util.entityutils ؛ isord com.alibaba.fastjson.jsonarray ؛ 7 أبريل ، 2016 08:30:16 ، تعتمد طريقة تشفير كلمة المرور RSA2 ، وطريقة التشفير موجودة في JS * * Author Tom * */Public Class Sinaweibologger {Private HttpClient Client ؛ post httppost الخاص ؛ httpget الخاص الحصول على ؛ Private BasicCookiestore Cookiestore ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ // plaintext حساب كلمة مرور السلسلة الخاصة ؛ // plaintext password private string su ؛ // base64 حساب مشفر سلسلة خاصة sp ؛ // RSA كلمة المرور المشفرة // البيانات المطلوبة للحصول على معلومات ما قبل اللوجينات تبدأ servertime الطويلة ؛ // خادم الطابع الزمني سلسلة خاصة nonce ؛ // خادم إرجاع السلسلة الخاصة بالسلسلة الخاصة بـ RSAKV ؛ // خادم إرجاع السلسلة ، وكلمة مرور تشفير RSA هي سلسلة خاصة. // يقوم الخادم بإرجاع مفتاح تشفير RSA ، المستخدم في RSA Encryption Private Int Retcode ؛ // حالة القيمة السلسلة الخاصة PCID ؛ الخاص int is_openlock ؛ Private Int Showpin ؛ تنفيذ int الخاص ؛ // تنتهي معلومات ما قبل اللوجين // إرجاع بيانات JSON بعد تسجيل الدخول إلى سلسلة خاصة uid ؛ سلسلة خاصة نيك خاص jsonarray domainurls ؛ // private StringBuffer HeaderCookie = new StringBuffer () ؛ // تسجيل الدخول إلى كلمة مرور تشفير ملف JS Content private static string sina_js = "var sinassoencoder = sinassoencoder || {} ؛ (function () {var hexcase = 0 ؛ var chrsz = 8 ؛ core_sha1 = function (x ، len) {x [len >> 5] | = 0x80 << (24-Len ٪ 32) ؛ x [(len+64 >> 9) << 4) +15] = len ؛ var w = array (80) ؛ var a = 1732584193 ؛ var b = -271733879 ؛ var c = -1732532541 d = 271733878 ؛ var e = -10095899776 ؛ for (var i = 0 ؛ i <x.length ؛ i+= 16) {var olda = a ؛ var oldb = b ؛ var oldc = c ؛ var oldd = d ؛ var old = e ؛ for (var j = 0 ؛ j <80 ؛ w [j] = rol (w [j-3]^w [j-8]^w [j-14]^w [j-16] ، 1) ؛ var t = safe_add (safe_add (rol (a ، 5) ، sha1_ft (j ، b ، c ، d)) ، safe_add (safe_add (e ، w [j]) ، sha1_kt (j))) ؛ e = d ؛ d = c ؛ c = r (b ، 30)) ؛ b = a ؛ a = t ؛} a = safe_add (a ، olda) ؛ b = safe_add (b ، oldb) ؛ c = safe_add (c ، oldc) ؛ d = safe_add (d ، oldd) ؛ e = safe_add (e ، old) ؛}} إرجاع مجموعة (A ، B ، C ، D ، E) ؛} ؛ var sha1_ft = function (t ، b ، c ، d) {if (t <20) return (b & c) | (~ b) & d) ؛ if (t <40) return b^c^d ؛ if (t <60) return (b & c) | sha1_kt = function (t) {return (t <20)؟ 1518500249: (t <40)؟ 1859775393: (t <60)؟-1894007588: -899497514 ؛} ؛ var safe_add = x ، y) {var lsw = msw = (x >> 16)+(y >> 16)+(lsw >> 16) ؛ العودة (msw << 16) | (lsw & 0xfff) ؛} ؛ var rol = function (num ، cnt) {return (num << cnt) | Mask = (1 << chrsz) -1 ؛ for (var i = 0 ؛ i <str.length*chrsz ؛ i+= chrsz) bin [i >> HEX_TAB = hexcase؟ '0123456789ABCDEF': '0123456789ABCDEF' ؛ var str = '' ؛ for (var i = 0 ؛ i <binarray.length*4 ؛ i ++) {str+= Hex_tab.charat ((binarray [i >> 2] >> ((3-i ٪ 4)*8+4)) & 0xf)+Hex_tab.charat ((binarray [i> 2] str ؛} ؛ this.base64 = {encode: function (input) {input = ''+input ؛ if (input == '') ؛ i = 0 ؛ do {chr1 = input.charcodeat (i ++) ؛ chr2 = input.charcodeat (i ++) ؛ chr3 = input.charcodeat (i ++) ؛ enc1 = chr1 >> 2 ؛ en C2 = ((chr1 & 3) << 4) | (chr2 >> 4) ؛ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6) ؛ enc4 = chr3 & 63 ؛ if (isnan (chr2)) {enc3 = enc4 = 64 ؛} آخر إذا (isnan (chr3)) {enc4 = 64 ؛} الإخراج = الإخراج+this._keys.charat (enc1) الإخراج ؛} ، _ مفاتيح: 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='} ؛}) j_lm = ((Canary & 0xfffffffff) == 0xefcafe) ؛ وظيفة biginteger (a ، b ، c) {if (a! this.fromstring (a ، b) ؛} function nbi () {return new Biginteger (null) ؛} function AM1 (i ، x ، w ، j ، c ، n) {while (-n> = 0) {var v = x*this [i ++]+w [j]+c ؛ c ؛ c = math.floor (v/0x4000000) ؛ w [j ++] = v & 0x3ffffff ؛} return c ؛ l = هذا [i] & 0x7ff ؛ var h = this [i ++] >> 15 ؛ var m = xh*l+h*xl ؛ l = xl*l+((m & 0x7ffff) << 15)+w [j]+(c & 0x3ffffffff) ؛ c = (l >>> 30)+(m >>> 15)+Xh* AM3 (i ، x ، w ، j ، c ، n) {var xl = x & 0x3ffff ، xh = x >> 14 ؛ m = xh*l+h*xl ؛ l = xl*l+((m & 0x3ffff) << 14)+w [j]+c ؛ c = (l >> 28)+(m >> 14)+xh*h ؛ w [j ++] = l & 0xfffffff ؛} return c ؛} biginteger.prototype.am = am3 ؛ dbits = 28 ؛ biginteger.prototype.db = dbits ؛ biginteger.prototype.dm = ((1 << dbits) -1) ؛ biginteger.prototype.dv = (1 <dbits) ؛ var bi_fp = 52 ؛ biginteger.prototype.fv = math.pow (2 ، bi_fp) ؛ biginteger.prototype.f1 = bi_fp-dbits ؛ biginteger.prototype.f2 = 2*dbits-bi_fp ؛ var bi_rm = '0123456789abcdefghijklmnopqrstuvwxyz' ؛ var bi_rc = new array () ؛ var rr ، vv ؛ rr = '0'.charcodeat (0) ؛ for (vv = 0 ؛ vv <= 9 ؛ ++ vv) bi_rc [rr ++] = vv ؛ rr =' a'.charcodeat (0) ؛ for (vv = 10 ؛ vv <36 ؛ ++ vv) bi_rc [rr ++] = vv ؛ rr = 'a'.charcodeat (0) ؛ for (vv = 10 ؛ vv <36 ؛ ++ vv) bi_rc [rr ++] = vv ؛ function int2char (n) {return bi_rm.charat (n) ؛} وظيفة intat (s ، i ، i) {var c = bi_rc [s.charcodeat (i)] i = this.t-1 ؛ i> = 0 ؛-i) r [i] = this [i] ؛ rt = this.t ؛ rs = this.s ؛} function bnpfromint (x) {this.t = 1 ؛ this.s = (x <0)؟-1: 0 ؛ if (x> 0) this [0] = x ؛ els ؛ nbv (i) {var r = nbi () ؛ r.fromint (i) ؛ return r ؛} الوظيفة bnpfromstring (s ، b) {var k ؛ if (b == 16) k = 4 ؛ if (b == 4) k = 2 ؛ else {this.fromradix (s ، b) ؛ return ؛} this.t = 0 ؛ this.s = 0 ؛ var i = s.length ، mi = false ، sh = 0 ؛ ick (--i> = 0) {var x = (k == 8)؟ s [i] & 0xff: intat (s ، i) ؛ if (x <0) {if (s.charat (i) == '-') mi = true ؛ extre ؛} mi = false ؛ if (sh == 0) this.t ++] = x ؛ else ؛ if (sh+k> this.db) {this [this.t-1] | = (x & (1 << (this.db-sh))-1)) << sh ؛ this [th this.t ++] = (x >> (this.db-sh)) ؛} آخر هذا [this.t-1] | = x << sh ؛ sh+= k ؛ if (sh> = this.db) sh- = this.db ؛} if (k == 8 && (s [0] & 0x80)! = 0) {this.s = -1 ؛ if (sh> 0) th هو [this.t-1] | = ((1 << (this.db-sh))-1) << sh ؛} this.clamp () ؛ if (mi) biginteger.zero.subto (this ، this) ؛} bnpclamp () {var c = this.s & this.dm ؛ بينما (this.t> 0 && this [this.t-1] == c)-this.t ؛} function bntostring (b) {if (this.s <0) return '-'+this.negate (). إذا (b == 2) k = 1 ؛ else (b == 32) k = 5 ؛ else if (b == 4) k = 2 ؛ else this.toradix (b) ؛ var km = (1 << k) -1 ، d ، m = false ، r = '' ، i = this.t ؛ var ؛ var p = this.db- (i*this.db) ٪ k ؛ if (i-> 0) {if (p <this.db && (d = this [i] >> p)> 0) {m = true ؛ r = int2char (d) ؛} بينما (i> = 0) {if (p <k) {d = (this [i] (kp) ؛ d | = this [-i] >> (p+= this.db-k) ؛} else {d = (this [i] >> (p- = k)) & km ؛ if (p <= 0) {p+= th this.db ؛-i ؛}}}}} if (d> 0) m = true ؛ if (m) r+= int2char (d) ؛ m؟ r: '0' ؛} function bnnegate () {var r = nbi () ؛ biginteger.zero.subto (this ، r) ؛ return r ؛} function bnabs () {return (this.s <0)؟ i = this.t ؛ r = ia.t ؛ if (r! = 0) return r ؛ بينما (-i> = 0) if ((r = this [i] -a [i])! r = 1 ، t ؛ if ((t = x >>> 16)! = 0) {x = t ؛ r+= 16 ؛} if ((t = x >> 8)! = 0) {x = t ؛ r+= 8 ؛} if ((t = x >> 4) ! = 0) {x = t ؛ r+= 4 ؛} if ((t = x >> 2)! = 0) {x = t ؛ r+= 2 ؛} if ((t = x >> 1)! = 0) {x = t ؛ r+= 1 ؛} return r ؛} function bnbitlength () {if (this.t <= 0) return 0 ؛ return this.db*(this.t-1)+nbits (this [this.t-1]^(this.s & this.dm)) ؛} function bnbitlength () {if (this.t <= 0) return 0 ؛ this.db*(this.t-1)+nbits (this [this.t-1]^(this.s & this.dm)) ؛} function bnpdlshiftto (n ، r) {var i ؛ for (i = this.t-1 ؛ i> = 0 ؛ -i) r [i+n] = this [i] ؛ for (i = n-1 ؛ i> = 0 ؛ -i) r [i] = 0 ؛ rt = this.t+n ؛ rs = this.s ؛} function bnpdrshiftto (n ، r) {for var i = n ؛ i <this.t ؛ ++ i) r [in] = this [i] ؛ rt = math.max (this.tn ، 0) ؛ rs = this.s ؛} function bnplshiftto (n ، r) {var bs = n ٪ this.db ؛ var cbs = th this.db-bs ؛ var bm = ds = math.floor (n/this.db) ، c = (this.s << bs) & this.dm ، i ؛ for (i = this.t-1 ؛ i> = 0 ؛-i) {r [i+ds+1] = (this [i] >> cbs) | c ؛ c = (this [i] & bm) << bs ؛} لـ (i = ds-1 ؛ i> = 0 ؛ -i) r [i] = 0 ؛ r [ds] = c ؛ rt = this.t+ds+1 ؛ rs = this.s ؛ r.clamp () ؛} bnprshiftto (n ، r) {rs = this.s ؛ var ds = math.floor (n/this.db) ؛ if (ds> = this.t) {rt = 0 ؛ return ؛ i = ds+1 ؛ i <this.t ؛ ++ i) {r [i-dd-1] | = (this [i] & bm) << cbs ؛ r [i-ds] = this [i] >> bs ؛} if (bs> 0) r bnpsubto (a ، r) {var i = 0 ، c = 0 ، m = math.min (at ، this.t) ؛ بينما (i <m) {c+= this [i] -a [i] ؛ r [i ++] = c & this.dm ؛ c >> = this.db ؛} if (at <th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th this.t) iS.dm ؛ c >> = this.db ؛} c+= this.s ؛} آخر {c+= this.s ؛ بينما (i <at) {c- = a [i] ؛ r [i ++] = c & this.dm ؛ c >> = this.db ؛} c- = as ؛} rs = (c <0)؟-1: 0 ؛ if (c <-1) r [i ++] = this.dv+c ؛ else if (c> 0) r [i ++] = c ؛ rt = i ؛ r.clamp () ؛} function bnpmultiplyto (a ، r) {var x = this.abs () ، y = A.ABS () ؛ var i = xt ؛ rt = i+yt ؛ بينما (-i> = 0) r [i] = 0 ؛ for (i = 0 ؛ i <yt ؛ ++ i) r [i+xt] = x.am (0 ، y [i] ، r ، i ، 0 ، xt) ؛ rs = 0 ؛ R.Clamp () ؛ if (هذا bnpsquareto (r) {var x = this.abs () ؛ var i = rt = 2*xt ؛ بينما (-i> = 0) r [i] = 0 ؛ for (i = 0 ؛ i <xt-1 ؛ ++ i) {var c = x.am (i ، x [i] ، r ، 2*i ، 0،1) ؛ if ((r [i+xt]+= x.am (i+1،2*x [i] ، r ، 2*i+1 ، c ، xt-i-1))> = x.dv) {r [i+xt ]-= x.dv ؛ r [i+x.t+1] = 1 ؛}} إذا (rt> 0) r [rt-1]+= x.am (i ، x [i] ، r ، 2*i ، 0،1) ؛ rs = 0 ؛ r.clamp () ؛} الدالة bnpdivremto (m ، q ، r) {var pm = m.abs () ؛ if (pm.t <= 0) return ؛ var pt = this.abs () ؛ if (pt.t <pm.t) {{q! = null) q.fromint (0) ؛ y = nbi () ، ts = this.s ، ms = ms ؛ var nsh = this.db-nbits (pm [pm.t-1]) ؛ if (nsh> 0) {pm.lshiftto (nsh ، y) ؛ pt.lshiftto (nsh ، r) ؛ y0 = y [ys-1] ؛ if (y0 == 0) return ؛ var yt = y0*(1< this.f1)+((ys> 1)؟ i = rt ، j = i-ys ، t = (q == null)؟ nbi (): q ؛ y.dlshiftto (j ، t) ؛ if (r.compareto (t)> = 0) {r [r.t ++] = 1 ؛ r.subto (t ، r) ؛} biginteger.one.dlshiftto (ys ، t) ؛ t بينما (yt <ys) y [y.t ++] = 0 ؛ بينما (-j> = 0) {var qd = (r [-i] == y0)؟ this.dm: math.floor (r [i]*d1+(r [i-1]+e)*d2) ؛ if ((r [i]+= y.am (0 ، qd ، r ، j ، 0 ، ys)) <qd) {y.dlshiftto (j ، t) ؛ r.subto (t ، r) ؛ بينما (r [i] <-qd) r.subto (t ، r) ؛}} if (q! = null) {r.drshiftto (ys ، q) ؛ if (ts! = ms) biginteger.zero.subto (q ، q) ؛ r = nbi () ؛ this.abs (). tefrimto (a ، null ، r) ؛ if (this.s <0 && r.compareto (biginteger.zero)> 0) a.subto (r ، r) ؛ return r ؛} function classic (m) {this.m = m ؛ x.mod (this.m) ؛ else return x ؛} وظيفة crevert (x) {return x ؛} creduce (x) {x.divremto (this.m ، null ، x) ؛} function cmulto (x ، y ، r) csqrto (x ، r) {x.squareto (r) ؛ this.reduce (r) ؛} classic.prototype.convert = cconvert ؛ classic.prototype.revert = crevert ؛ classic.prototype.reduce = creduce ؛ classic.proto.multo = cmulto ؛ classic.sqrto = csqrto = bnpinvdigit () {if (this.t <1) return 0 ؛ var x = this [0] ؛ if ((x & 1) == 0) return 0 ؛ var y = x & 3 ؛ y = (y*(2- (x & 0xf)*y)) & 0xf ؛ y = (y*(2- (x & 0xff)*y)) & 0xff ؛ y = (y*(2-((x & 0xffff)*y) & 0 xffff))) & 0xffff ؛ y = (y*(2-x*y ٪ this.dv)) ٪ this.dv ؛ return (y> 0)؟ this.dv-y: -y ؛} montgomery (m) {this.m = m ؛ this.mp = m.invdigit () ؛ this.mpl = this.mp & 0x7ff ؛ this.mph = this.mp >> 15 ؛ this.um = (1 << (m.db-15))-1 ؛ mt2 = 2*mt ؛} montconvert (x) {var r = nbi () ؛ x.abs (). dlshiftto (this.mt ، r) ؛ r.divremto (this.m ، null ، r) ؛ if (xs <0 && r.compareto (biginteger.zero)> 0) this.m.subto (r ، r) ؛ r = nbi () ؛ x.copyto (r) ؛ this.reduce (r) ؛ return r ؛} وظيفة montreduce (x) {بينما (xt <= this.mt2) x [x.t ++] = 0 ؛ for (var i = 0 ؛ u0 = (j*this.mpl+(((j*this.mph+(x [i] >> 15)*this.mpl) & this.um) << 15)) E (x [j]> = x.dv) {x [j]-= x.dv ؛ x [++ j] ++ ؛}} x.clamp () ؛ x.drshiftto (this.mt ، x) ؛ if (x.compareto (this.m)> = 0) x.subto (this.m ، x) ؛} montsqrto (x ، r) {x.squareto (r) ؛ this.reduce (r) ؛} وظيفة montmulto (x ، y ، r) {x.multiplyto (y ، r) ؛ this.reduce (r) ؛} montgomery.prototype.convert = montconvert ؛ montgomery.prototype.revert = montre vert ؛ montgomery.prototype.reduce = montreduce ؛ montgomery.prototype.multo = montmulto ؛ montgomery.prototype.sqrto = montsqrto ؛ function bnpiseven () {return ((this.t> 0)؟ (this [0] & 1): this.s) == 0 ؛} function Bnpexp (e ، z) {if (e> 0xfffffffffffffffffffffffffffffffffffff || e <1) return biginteger.one ؛ var r = nbi () ، r2 = nbi () ، g = z.convert (this) ، i = nbits (e) -1 ؛ g.copyto (r) ؛ بينما (-i> = 0) {z.sqrto (r ، r2) ؛ if ((e & 1 << i))> 0) z.multo (r2 ، g ، r) ؛ t = r ؛ r = r2 ؛ r2 = t ؛}} return z.revert (r) ؛} function bnmodpowint (e ، m) {var z ؛ if (e <256 || this.exp (e ، z) ؛} biginteger.prototype.copyto = bnpcopyto ؛ biginteger.prototype.fromint = bnpfromint ؛ biginteger.prototype.fromstring = bnpfromstring ؛ b iginteger.prototype.clamp = bnpclamp ؛ biginteger.prototype.dlshiftto = bnpdlshiftto ؛ biginteger.prototype.dlshiftto = bnpdlshiftto ؛ biginteger.protot ype.drshiftto = bnpdrshiftto ؛ biginteger.prototype.lshiftto = bnplshiftto ؛ biginteger.prototype.rshiftto = bnprshiftto ؛ biginte ger.prototype.subto = bnpsubto ؛ biginteger.prototype.multiplyto = bnpmultiplyto ؛ biginteger.prototype.squareto = bnpsquareto ؛ bi ginteger.prototype.divremto = bnpdivremto ؛ biginteger.prototype.invdigit = bnpinvdigit ؛ biginteger.prototype.iseven = bnpiseve n ؛ biginteger.prototype.exp = bnpexp ؛ biginteger.prototype.toString = bntoString ؛ biginteger.prototype.negate = bnnegate ؛ biginte ger.prototype.abs = bnabs ؛ biginteger.prototype.compareto = bncompareto ؛ biginteger.prototype.bitlength = bnbitlength ؛ biginteg er.prototype.mod = bnmod ؛ biginteger.prototype.modpowint = bnmodpowint ؛ biginteger.zero = nbv (0) ؛ biginteger.one = nbv (1) ؛ function arcfour () {this.i = 0 ؛ this.j = 0 ؛ this.s = new Array () ؛} function ARC4Init (key) {var i ، j ، t ؛ for (i = 0 ؛ i <256 ؛ ++ i) هذا. طول]) & 255 ؛ t = this.s [i] ؛ this.s [i] = this.s [j] ؛ this.s [j] = t ؛} this.i = 0 ؛ this.j = 0 ؛} arc4next () {var t ؛ this.i = (this.i+1) & 255 ؛ this.j = (this.j this.s [this.i]) & 255 ؛ t = this.s [this.i] ؛ this.s [this.i] = this.j] ؛ this.s [this.j] = t ؛ هذا. RNG_PPTR ؛ وظيفة rng_seed_int (x) {rng_pool [rng_pptr ++]^= x & 255 ؛ rng_pool [rng_pptr ++]^= (x >> 8) & 255 ؛ rng_pool [rng_pptr ++]^ = (x >> 16) & 255 ؛ rng_pool [rng_pptr ++]^= (x >> 24) & 255 ؛ if (rng_pptr> = rng_psize) rng_pptr- = rng_psize ؛} الدالة rng_seed_time () {rng_seed_int (new date (). getTime ()) ؛} if (rng_pool = null) {rng_pool = new array () ؛ rng_pptr = 0 ؛ var t ؛ بينما (rng_pptr <rng_psize) {t = math.floor (65536*math.random ()) ؛ rng_pool [rng_pptr ++] = t >>> 8 ؛ rng_pool [rng_pptr ++] = t & 255 ؛} rng_pptr = 0 ؛ rng_get_byte () {if (rng_state == null) {rng_seed_time () ؛ rng_state = prng_newstate () ؛ rng_state.init (rng_ pool) ؛ for (rng_pptr = 0 ؛ rng_pptr <rng_pool.length ؛ ++ rng_pptr) rng_pool [rng_pptr] = 0 ؛ rng_pptr = 0 ؛} rng_state.next () ؛} function rng_get_bytes (ba) {var i ؛ for (i = 0 ؛ i <ba.length ؛ ++ i) ba [i] = rng_get_byte () ؛ parsebigint (str ، r) {return new biginteger (str ، r) ؛} function lineBrk (s ، n) {var ret = '' ؛ var i = 0 ؛ بينما (i+n <s.length) {ret+= s.substring (i ، i+n)+'// n' byte2Hex (b) {if (b <0x10) return '0'+b.ToString (16) ؛ else report B.ToString (16) ؛} function pkcs1pad2 (s ، n) {if (n <s.length+11) {return null ؛ c = s.charcodeat (i-) ؛ if (c <128) {ba [-n] = c ؛} آخر if (((c> 127) && (c <2048)) {ba [-n] = (c & 63) | 128 ؛ ba [-n] = (c >> 6) | 192 ؛} {ba [- n] = (c & 63) | 128 ؛ ba [-n] = (c >> 6) و 63) | 128 ؛ ba [-n] = (c >> 12) | 224 ؛}} ba [-n] = 0 ؛ var rng = new SecurerAndom () ؛ var x = new array () ؛ بينما (n> 2) {x [0] = 0 ؛ بينما (x [0] == 0) rng.nextbytes (x) ؛ ba [-n] = x [0] ؛} ba [-n] = 2 ؛ ba [-n] = 0 ؛ rsakey () {this.n = null ؛ this.e = 0 ؛ this.d = null ؛ this.p = null ؛ this.q = null ؛ this.dmp1 = null ؛ this.dmq1 = null ؛ this.coeff = null ؛} الدالة rsasetpublic (n ، e) {if (n! = null && e! = null && n.length> 0 && e.length> 0) {this.n = parsebigint (n ، 16) ؛ this.e = parseint (e ، 16) ؛ x.modpowint (this.e ، this.n) ؛} function rsaencrypt (text) {var m = pkcs1pad2 (text ، (this.n.bitlength ()+7) >> 3) ؛ if (m == null) return null ؛ var c = this.dopublic (m) ؛ if (c == null) h = c.toString (16) ؛ if ((H.Length & 1) == 0) return h ؛ else report '0'+h ؛} rsakey.prototype.dopublic = rsadopublic ؛ rsakey.prototype.setpublic = rsasetpublic ؛ rsakey.prototype.encrypt = rsaencrypt ؛ this.rsakey = rsakey ؛}) password = rsakey.encrypt ([serviceTime ، nonCe]. BasicCookiestore () ؛ .build () ؛ قم بتشفير كلمة مرور المستخدم للطلب مرة أخرى * * athrows ioException * throws clientprotocolexception * throws urisyntaxexception */ private void prelogin () rems clientprotocolexception ، ioexception ، urisyntaxexception {// 1 su = new string64.encodebase64 (urlencode "UTF-8"). getBytes ())) ؛ سلسلة preloginurl = "http://login.sina.com.cn/sso/prelogin.php؟entry=Account&callback=sinassocontroller.prelogincallback&su=" + su + "& rsakt = mod & client = ssologin.js (v1.4.15) & _ =" get.seturi (uri new (preloginurl)) ؛ get.addheader ("Host" ، "login.sina.com.cn") ؛ get.addheader ("Assion-Agent" ، "Mozilla/5.0 (Windows NT 6.1 ؛ Wow64 ؛ RV: 45.0) Gecko/20100101 Firefox/45.0") ؛ get.addheader ("قبول" ، "*/*") ؛ get.addheader ("قبول اللغة" ، "ZH-CN ، ZH ؛ q = 0.8 ، en-us ؛ q = 0.5 ، en ؛ q = 0.3") ؛ get.addheader ("قبول الترميز" ، "gzip ، deflate") ؛ get.addheader ("المرجع" ، "http://login.sina.com.cn/") ؛ get.addheader ("الاتصال" ، "keep-alive") ؛ httpresponse resp = client.execute (get) ؛ // احفظ الطلب وأرجع ملف تعريف الارتباط. بعد تسجيل الدخول ، تحتاج إلى استخدام ملفات تعريف الارتباط لطلب صفحات أخرى. SaveCookie (resp.getAllheaders () ، this.headercookie) ؛ كيان httpentity = resp.getentity () ؛ سلسلة cont = entityUtils.ToString (الكيان) ؛ // system.out.println (cont) ؛ cont = cont.replace ("sinassocontroller.prelogincallback (" ، "") ؛ cont = cont.replace (")" ، "") ؛ jsonobject json = jsonobject.parsebject (cont) ؛ this.retcode = json.getIntValue ("Retcode") ؛ this.servertime = json.getlongvalue ("servertime") ؛ this.pubkey = json.getString ("pubKey") ؛ this.rsakv = json.getString ("rsakv") ؛ this.is_openlock = json.getIntValue ("is_openlock") ؛ this.showpin = json.getIntValue ("showpin") ؛ this.exectime = json.getIntValue ("exectime") ؛ } private void savecookie (header [] headers ، stringbuffer headercookie) {for (header h: headers) {if (h.getName (). equals ("set-cookie)) {HeaderCookie.append (h.getValue ()). opdend (" ؛ "؛") ؛ }}}} / ** * قم بتسجيل الدخول إلى حساب Sina Pass ، تشفير كلمة المرور ، طلب النشر * * * return * * throws ioException * throws clientprotocolexception * throws scriptexception * thrhrows nossection ، ClientProtocolexception ، ioException ، urisyntaxException {// 2 string loginurl = "http://login.sina.com.cn/sso/login.php؟client=ssologin.js(v1.4.15)&_==" post.seturi (uri new (loginurl)) ؛ post.addheader ("Host" ، "login.sina.com.cn") ؛ post.addheader ("Assion-Agent" ، "Mozilla/5.0 (Windows NT 6.1 ؛ Wow64 ؛ RV: 45.0) Gecko/20100101 Firefox/45.0") ؛ post.addheader ("قبول" ، "*/*") ؛ post.addheader ("نوع المحتوى" ، "التطبيق/x-www-form-urlencoded") ؛ post.addheader ("قبول اللغة" ، "ZH-CN ، ZH ؛ q = 0.8 ، en-us ؛ q = 0.5 ، en ؛ q = 0.3") ؛ post.addheader ("قبول الترميز" ، "gzip ، deflate") ؛ post.addheader ("المرجع" ، "http://login.sina.com.cn/") ؛ post.addheader ("الاتصال" ، "keep-alive") ؛ // استخدم JS لتشفير كلمة المرور ، RSA ، اتصل بالطريقة في JS ScriptenGeneManager SEM = New ScriptenGinAger () ؛ scriptengine se = sem.getEngineByName ("javaScript") ؛ se.eval (sina_js) ؛ if (se exateof invocable) {invocable iv = (invocable) se ؛ sp = (string) iv.invokefunction ("getPass" ، this.password ، this.servertime ، this.nonce ، this.pubkey) ؛ } list <AameValUepair> parms = new ArrayList <AameValUepair> () ؛ parms.add (New BasicNameValuePair ("intrading" ، "account")) ؛ parms.add (New BasicNameValuePair ("Gateway" ، "1")) ؛ parms.add (New BasicNameValuePair ("من" ، "")) ؛ parms.add (New BasicNameValuePair ("Savestate" ، "0")) ؛ parms.add (New BasicNameValuePair ("Savestate" ، "0")) ؛ parms.add (New BasicNameValuePair ("Useticket" ، "0")) ؛ parms.add (New BasicNameValuePair ("pagerefer" ، "")) ؛ parms.add (New BasicNameValuePair ("vsnf" ، "1")) ؛ parms.add (New BasicNameValuepair ("su" ، su)) ؛ parms.add (New BasicNameValuePair ("Service" ، "SSO")) ؛ parms.add (New BasicNameValuePair ("servertime" ، servertime + "")) ؛ parms.add (New BasicNameValuePair ("nonce" ، nonce)) ؛ parms.add (New BasicNameValuePair ("pwencode" ، "RSA2")) ؛ parms.add (New BasicNameValuePair ("rsakv" ، rsakv)) ؛ parms.add (New BasicNameValuePair ("sp" ، sp)) ؛ parms.add (New BasicNameValuepair ("SR" ، "1366*768")) ؛ parms.add (New BasicNameValuePair ("الترميز" ، "UTF-8")) ؛ parms.add (New BasicNameValuePair ("cdult" ، "3")) ؛ parms.add (New BasicNameValuePair ("domain" ، "sina.com.cn") ؛ parms.add (New BasicNameValuePair ("prelt" ، "51")) ؛ parms.add (New BasicNameValuePair ("returntype" ، "text")) ؛ post.setentity (urlencodedformentity (parms)) ؛ httpresponse resp = client.execute (post) ؛ // احفظ الطلب وأرجع ملف تعريف الارتباط. بعد تسجيل الدخول ، تحتاج إلى الحصول على ملف تعريف ارتباط. SaveCookie (resp.getAllheaders () ، this.headercookie) ؛ // طلب إرجاع رابط jsonobject jsonobj = jsonobject.parseObject (entityUtils.ToString (resp.getentity ())) ؛ system.out.println (jsonobj.tojsonstring ()) ؛ this.retcode = jsonobj.getIntValue ("Retcode") ؛ this.uid = jsonobj.getString ("uid") ؛ this.nick = jsonobj.getString ("nick") ؛ this.domainurls = jsonobj.getjsonarray ("crossdomainurllist") ؛ قائمة <Tring> Retmsg = new ArrayList <String> () ؛ int i = 0 ؛ لـ (url Object url: domainurls) {get.seturi (new uri (url.toString ()+"& callback = sinassocontroller.docrossdomaincallback & scriptid = sscipline"+i+"& client = ssologin.js (v1.4.15) & _ =" resp = client.execute (get) ؛ retmsg.add (entityUtils.ToString (resp.getentity ())) ؛ i ++ ؛ } get.seturi (new uri ("http://login.sina.com.cn/member/my.php؟entry=sso")) ؛ // أضف طلب ملف تعريف الارتباط إلى رأس الطلب get.addheader ("ملف تعريف الارتباط" ، this.headercookie.toString ()) ؛ resp = client.execute (get) ؛ سلسلة cont = readStreamByencoding (resp.getentity (). getContent () ، "gbk") ؛ retmsg.add (تابع) ؛ لـ (string s: retmsg) {system.out.println (s) ؛ }} سلسلة خاصة readStreamByencoding (inputStream in ، ترميز السلسلة) يلقي ioException {StringBuffer cont = new StringBuffer () ؛ BufferedReader BR = جديد BufferEdReader (New InputStreamReader (In ، الترميز)) ؛ سلسلة tmp = "" ؛ بينما ((tmp = br.readline ())! = null) {cont.append (tmp) ؛ } br.close () ؛ إرجاع cont.toString () ؛ } / *** login* / public void login () {try {this.prelogin () ؛ this.AccountLogin () ؛ } catch (clientProtocolexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (nosuchmethodexception e) {e.printStackTrace () ؛ } catch (scriptexception e) {e.printStackTrace () ؛ } catch (urisyntaxException e) {e.printStackTrace () ؛ }} public httpclient getClient () {return client ؛ } public void setClient (httpclient client) {this.client = client ؛ } httppost getPost () {return post ؛ } public void setPost (httppost post) {this.post = post ؛ } httpget getget () {return get ؛ } public void setget (httpget get) {this.get = get ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getSu () {return su ؛ } public void setSu (String su) {this.su = su ؛ } السلسلة العامة getSp () {return sp ؛ } public void setsp (string sp) {this.sp = sp ؛ } السلسلة العامة getNonce () {return nonce ؛ } public void setNonce (String nonce) {this.nonce = nonce ؛ } السلسلة العامة getRsakv () {return rsakv ؛ } public void setrsakv (string rsakv) {this.rsakv = rsakv ؛ } السلسلة العامة getPubKey () {return pubkey ؛ } public void setPubKey (String pubKey) {this.pubkey = pubKey ؛ } public getRetCode () {return retcode ؛ } public void setRetCode (int retcode) {this.retcode = retcode ؛ } السلسلة العامة getuid () {return uid ؛ } public void setuid (string uid) {this.uid = uid ؛ } السلسلة العامة getNick () {return nick ؛ } public void setNick (String nick) {this.nick = nick ؛ } السلسلة الثابتة العامة getSina_js () {return sina_js ؛ } publiccookiestore getCookiestore () {return cookiestore ؛ } public void setCookiestore (BasicCookiestore Cookiestore) {this.cookiestore = cookiestore ؛ } public static void main (string [] args) {new Sinaweibologger ("" ، "") .login () ؛ }} كان تسجيل الدخول ناجحًا للغاية ، لذلك أضفت بعض التعديلات إلى هذا الرمز ، وبعد تشغيل الكود ، تم الإبلاغ عن خطأ إعادة تعيين الاتصال ؛
بعد البحث ، تبين أن التفويض قد تم التصريح به بنجاح ، ولكن بعد نجاح التفويض ، سيتم إعادة توجيه الصفحة مرتين ، لذلك تم الإبلاغ عن هذا الخطأ. لذلك بدأت في كتابة روابط هنا مرة أخرى.
وجدت أخيرًا ما أريده في هذا
/ ** * احصل على جميع المواقع إعادة التوجيه بناءً على الرابط المحدد * رابط param المعطى * RETURN * throws clientprotocolexception * throws ioException */ قائمة عامة <Uri> getAllredirectlocations (ارتباط السلسلة) clientprotocolexception ، ioException {list <uri> redirectlocations = null ؛ closablehttpresponse استجابة = فارغة ؛ حاول {httpclientcontext context = httpclientContext.create () ؛ httpget httpget = new httpget (link) ؛ استجابة = httpclient.execute (httpget ، السياق) ؛ // احصل على جميع المواقع إعادة توجيه إعادة توجيه = context.getRedirectLocations () ؛ } أخيرًا {if (response! = null) {response.close () ؛ }} return redirectlocations ؛ }وبهذه الطريقة ، مع SDK من Weibo ، سيتم الانتهاء من مجموعة من العمليات من Weibo إلى إرسال Weibo. الرمز الكامل كما يلي:
package weibo4j.examples.test ؛ استيراد java.io.ioException ؛ استيراد java.net.uri ؛ استيراد java.net.urisyntaxException ؛ استيراد java.net.urlencoder ؛ استيراد java.text.simpledateformat ؛ استيراد java.util. javax.script.invocable ؛ import javax.script.scriptengine ؛ import javax.script.scriptenginager ؛ import javax.script.scriptexception ؛ import org.apache.commons.codec.baren org.apache.http.header ؛ import org.apache.http.httpentity ؛ import org.apache.http.httprespons org.apache.http.client.httpclient ؛ import org.apache.http.client.entity.urlencodedformentity ؛ import org.apache.http.client.methods.closablehttprespons org.apache.http.client.methods.httppost ؛ import org.apache.http.client.protocol.httpclientcontext ؛ import org.apache.http.config.registry ؛ import org.http.config.registry ؛ org.apache.http.cookie.cookiespec ؛ import org.apache.http.cookie.cookiespecprovider ؛ import org.apache.http.impl.client.basicoistore org.apache.http.impl.client.httpclients ؛ import org.apache.http.impl.cookie.defaultCookiespec ؛ import org.apache.http.message.basicnamevaluepair ؛ import org.http.protpcontext ؛ org.apache.http.util.entityUtils ؛ import weibo4j.oauth ؛ import weibo4j.timeline ؛ import weibo4j.http.accesstoken ؛ import weibo4j.model.status ؛ import weibo4j.model.weiboexpice ؛ com.Alibaba.fastjson.jsonarray ؛ استيراد com.alibaba.fastjson.jsonobject ؛/** * Sina Weibo Login ، 7 أبريل ، 2016 08:30:16 ، تعتمد طريقة تشفير كلمة المرور RSA2 ، طريقة التشفير في JS * * Author Tom */Public Sinaweibolient post httppost الخاص ؛ httpget الخاص الحصول على ؛ Private BasicCookiestore Cookiestore ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ // plaintext حساب كلمة مرور السلسلة الخاصة ؛ // plaintext password private string su ؛ // base64 حساب مشفر سلسلة خاصة sp ؛ // RSA كلمة المرور المشفرة // البيانات المطلوبة للحصول على معلومات ما قبل اللوجينات تبدأ servertime الطويلة ؛ // خادم الطابع الزمني سلسلة خاصة nonce ؛ // خادم إرجاع السلسلة الخاصة بالسلسلة الخاصة بـ RSAKV ؛ // خادم إرجاع السلسلة ، وكلمة مرور تشفير RSA هي سلسلة خاصة. // يقوم الخادم بإرجاع مفتاح تشفير RSA ، المستخدم في RSA Encryption Private Int Retcode ؛ // حالة القيمة pid pid ؛ الخاص int is_openlock ؛ Private Int Showpin ؛ تنفيذ int الخاص ؛ // تنتهي معلومات ما قبل اللوجين // إرجاع بيانات JSON بعد تسجيل الدخول إلى سلسلة خاصة uid ؛ سلسلة خاصة نيك خاص jsonarray domainurls ؛ // string clientId = weiboconfig.getValue ("client_id") ؛ string redirecturi = weiboconfig.getValue ("redirect_uri") ؛ string eleventurl = weiboconfig.getValue ("upliredizeurl") ؛ private StringBuffer HeaderCookie = new StringBuffer () ؛ //Login password encrypts js file content private static String sina_js = "var sinaSSOEncoder=sinaSSOEncoder||{};(function(){var hexcase=0;var chrsz=8;this.hex_sha1=function(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));};var core_sha1=function(x,len){x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;var old=e;for(var j=0;j<80;j++){if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30) ;b=a;a=t;}a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,old);} return Array(a,b,c,d,e);};var sha1_ft=function(t,b,c,d){if(t<20)return(b&c)|(~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);(c&d);return b^c^d;};var sha1_kt=function(t){return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;};var safe_add=function(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFF);};var rol=function(num,cnt){return(num<<cnt)|(num>>>(32-cnt));};var str2binb=function(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(24-i%32);return bin;};var binb2hex=function(binarray){var hex_tab=hexcase?'0123456789ABCDEF':'0123456789abcdef';var str='';for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}return str;};this.base64={encode:function(input){input=''+input;if(input=='')return '';var output='';var chr1,chr2,chr3='';var enc1,enc2,enc3,enc4='';var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;en c2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}output=output+this._keys.charAt(enc1)+this._keys.charAt(enc2)+this._keys.charAt(enc3)+this._keys.charAt(enc4);chr1=chr2=chr3='';enc1=enc2=enc3=enc4='';}while(i<input.length);return output;},_keys:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='};}).call(sinaSSOEncoder);;(function(){var dbits;var canary=0xdeadbeefcafe;var j_lm=((canary&0xffffffff)==0xefcafe);function BigInteger(a,b,c){if(a!=null)if('number'==typeof a)this.fromNumber(a,b,c);else if(b==null && 'string' !=typeof a)this.fromString(a,256);else this.fromString(a,b);}function nbi(){return new BigInteger(null);}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/0x4000000);w[j++]=v&0x3ffffff;}return c;}function am2(i,x,w,j,c,n){var xl=x&0x7fff,xh=x>>15;while(--n>=0){var l=this[i]&0x7ff;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&0x7ffff)<<15)+w[j]+(c&0x3ffffffff);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&0x3ffffffff;}return c;}function am3(i,x,w,j,c,n){var xl=x&0x3ffff,xh=x>>14;while(--n>=0){var l=this[i]&0x3ffff;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&0x3ffff)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&0xffffffff;}return c;}BigInteger.prototype.am=am3;dbits=28;BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM='0123456789abcdefghijklmnopqrstuvwxyz';var BI_RC=new Array();var rr,vv;rr='0'.charCodeAt(0);for(vv=0;vv<=9;++vv)BI_RC[rr++]=vv;rr='a'.charCodeAt(0);for(vv=10 ;vv<36;++vv)BI_RC[rr++]=vv;rr='A'.charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;function int2char(n){return BI_RM.charAt(n);}function intAt(s,i){var c=BI_RC[s.charCodeAt(i)];return(c==null)?-1:c;}function bnpCopyTo(r){for(var i=this.t-1;i>=0;--i)r[i]=this[i];rt=this.t;rs=this.s;}function bnpFromInt(x){this.t=1;this.s=(x<0)?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0;}function nbv(i){var r=nbi();r.fromInt(i);return r;}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return;}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=(k==8)?s[i]&0xff:intAt(s,i);if(x<0){if(s.charAt(i)=='-')mi=true;continue;}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&((1<<(this.DB-sh))-1))<<sh;this[this.t++]=(x>>(this.DB-sh));}else this[this.t-1]|=x<<sh;sh+=k;if(sh>=this.DB)sh-=this.DB;}if(k==8&&(s[0]&0x80)!=0){this.s=-1;if(sh>0)th is[this.t-1]|=((1<<(this.DB-sh))-1)<<sh;}this.clamp();if(mi)BigInteger.ZERO.subTo(this,this);}function bnpClamp(){var c=this.s&this.DM;while(this.t>0&&this[this.t-1]==c)--this.t;}function bnToString(b){if(this.s<0)return '-'+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<<k)-1,d,m=false,r='',i=this.t;var p=this.DB-(i*this.DB)%k;if(i-->0){if(p<this.DB&&(d=this[i]>>p)>0){m=true;r=int2char(d);}while(i>=0){if(p<k){d=(this[i]&(1<<p)-1))<< (kp);d|=this[--i]>>(p+=this.DB-k);}else{d=(this[i]>>(p-=k))&km;if(p<=0){p+=this.DB;--i;}}if(d>0)m=true;if(m)r+=int2char(d);}}return m?r:'0';}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r;}function bnAbs(){return(this.s<0)?this.negate():this;}function bnCompareTo(a){var r=this.sa.s;if(r!=0)return r;var i=this.t;r=ia.t;if(r!=0)return r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0;}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16;}if((t=x>>8)!=0){x=t;r+=8;}if((t=x>>4) !=0){x=t;r+=4;}if((t=x>>2)!=0){x=t;r+=2;}if((t=x>>1)!=0){x=t;r+=1;}return r;}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;-i)r[i+n]=this[i];for(i=n-1;i>=0;-i)r[i]=0;rt=this.t+n;rs=this.s;}function bnpDRShiftTo(n,r){for(var i=n;i<this.t;++i)r[in]=this[i];rt=Math.max(this.tn,0);rs=this.s;}function bnpLShiftTo(n,r){var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this.DB),c=(this.s<<bs)&this.DM,i;for(i=this.t-1;i>=0;--i){r[i+ds+1]=(this[i]>>cbs)| c;c=(this[i]&bm)<<bs;}for(i=ds-1;i>=0;-i)r[i]=0;r[ds]=c;rt=this.t+ds+1;rs=this.s;r.clamp();}function bnpRShiftTo(n,r){rs=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){rt=0;return;}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs;}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<<cbs;rt=this.t-ds;r.clamp();}function bnpSubTo(a,r){var i=0,c=0,m=Math.min(at,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this.DM;c>>=this.DB;}if(at<this.t){c-=as;while(i<this.t){c+=this[i];r[i++]=c&th is.DM;c>>=this.DB;}c+=this.s;}else{c+=this.s;while(i<at){c-=a[i];r[i++]= c&this.DM;c>>=this.DB;}c-=as;}rs=(c<0)?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;rt=i;r.clamp();}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=xt;rt=i+yt;while(--i>=0)r[i]=0;for(i=0;i<yt;++i)r[i+xt]=x.am(0,y[i],r,i,0,xt);rs=0;r.clamp();if(this.s!=as)BigInteger.ZERO.subTo(r,r);}function bnpSquareTo(r){var x=this.abs();var i=rt=2*xt;while(--i>=0)r[i]=0;for(i=0;i<xt-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+xt]+=x.am(i+1,2*x[i],r,2*i+1,c,xt-i-1))>=x.DV){r[i+xt ]-=x.DV;r[i+x.t+1]=1;}}if(rt>0)r[rt-1]+=x.am(i,x[i],r,2*i,0,1);rs=0;r.clamp();}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t<pm.t){if(q!=null)q.fromInt(0);if(r!=null)this.copyTo(r);return;}if(r==null)r=nbi();var y=nbi(),ts=this.s,ms=ms;var nsh=this.DB-nbits(pm[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r);}else{pm.copyTo(y);pt.copyTo(r);}var ys=yt;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<<this.F1)/yt,e=1<<this.F2;var i=rt,j=i-ys,t=(q==null)?nbi():q;y.dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r.subTo(t,r);}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y); while(yt<ys)y[y.t++]=0;while(--j>=0){var qd=(r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd ,r,j,0,ys))<qd){y.dlShiftTo(j,t);r.subTo(t,r);while(r[i]<--qd)r.subTo(t,r);}} if(q!=null){r.drShiftTo(ys,q);if(ts!=ms)BigInteger.ZERO.subTo(q,q);}rt=ys;r.clamp();if(nsh>0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r);}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r;}function Classic(m){this.m=m;}function cConvert(x){if(xs<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x;}function cRevert(x){return x;}function cReduce(x){x.divRemTo(this.m,null,x);}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r);}function cSqrTo(x,r){x.squareTo(r);this.reduce(r);}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=(y*(2-(x&0xf)*y))&0xf;y=(y*(2-(x&0xff)*y))&0xff;y=(y*(2-((x&0xffff)*y)&0 xffff)))&0xffff;y=(y*(2-x*y%this.DV))%this.DV;return(y>0)?this.DV-y:-y;}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&0x7ff;this.mph=this.mp>>15;this.um=(1<<(m.DB-15))-1;this.mt2=2*mt;}function montConvert(x){var r=nbi();x.abs().dlShiftTo(this.mt,r);r.divRemTo(this.m,null,r);if(xs<0&&r.compareTo(BigInteger.ZERO)>0)this.m.subTo(r,r);return r;}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r;}function montReduce(x){while(xt<=this.mt2)x[x.t++]=0;for(var i=0;i<this.mt;++i){var j=x[i]&0x7ff;var u0=(j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;j=i+this.mt;x[j]+=this.m.am(0,u0,x,i,0,this.mt);whil e(x[j]>=x.DV){x[j]-=x.DV;x[++j]++;}}x.clamp();x.drShiftTo(this.mt,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x);}function montSqrTo(x,r){x.squareTo(r);this.reduce(r);}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r);}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRe vert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0;}function bnpExp(e,z){if(e>0xffffffffff||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&(1<<i))>0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t;}}return z.revert(r);}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z);}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;B igInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.protot ype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInte ger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;Bi gInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEve n;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInte ger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteg er.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function Arcfour(){this.i=0;this.j=0;this.S=new Array();}function ARC4init(key){var i,j,t;for(i=0;i<256;++i)this.S[i]=i;j=0;for(i=0;i<256;++i){j=(j+this.S[i]+key[i%key. length])&255;t=this.S[i];this.S[i]=this.S[j];this.S[j]=t;}this.i=0;this.j=0;}function ARC4next(){var t;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;t=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=t;return this.S[(t+this.S[this.i])&255];}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;function prng_newstate(){return new Arcfour();}var rng_psize=256;var rng_state;var rng_pool;var rng_pptr;function rng_seed_int(x){rng_pool[rng_pptr++]^=x&255;rng_pool[rng_pptr++]^=(x>>8)&255;rng_pool[rng_pptr++]^ =(x>>16)&255;rng_pool[rng_pptr++]^=(x>>24)&255;if(rng_pptr>=rng_psize)rng_pptr-=rng_psize;}function rng_seed_time(){rng_seed_int(new Date().getTime());}if(rng_pool=null){rng_pool=new Array();rng_pptr=0;var t;while(rng_pptr<rng_psize){t=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=t>>>8;rng_pool[rng_pptr++]=t&255;}rng_pptr=0;rng_seed_time();}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_ pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0;}return rng_state.next();}function rng_get_bytes(ba){var i;for(i=0;i<ba.length;++i)ba[i]=rng_get_byte();}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;function parseBigInt(str,r){return new BigInteger(str,r);}function linebrk(s,n){var ret='';var i=0;while(i+n<s.length){ret+=s.substring(i,i+n)+'//n';i+=n;}return ret+s.substring(i,s.length);}function byte2Hex(b){if(b<0x10)return '0'+b.toString(16);else return b.toString(16);}function pkcs1pad2(s,n){if(n<s.length+11){return null;}var ba=new Array();var i=s.length-1;while(i>=0&&n>0){var c=s.charCodeAt(i--);if(c<128){ba[--n]=c;}else if((c>127)&&(c<2048)){ba[--n]=(c&63)|128;ba[--n]=(c>>6)|192;}else{ba[-- n]=(c&63)|128;ba[--n]=(c>>6)&63)|128;ba[--n]=(c>>12)|224;}}ba[--n]=0;var rng=new SecureRandom();var x=new Array();while(n>2){x[0]=0;while(x[0]==0)rng.nextBytes(x);ba[-n]=x[0];}ba[--n]=2;ba[-n]=0;return new BigInteger(ba);}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null;}function RSASetPublic(N,E){if(N!=null&&E!=null&&N.length>0&&E.length>0){this.n=parseBigInt(N,16);this.e=parseInt(E,16);}else alert('Invalid RSA public key');}function RSADoPublic(x){return x.modPowInt(this.e,this.n);}function RSAEncrypt(text){var m=pkcs1pad2(text,(this.n.bitLength()+7)>>3);if(m==null)return null;var c=this.doPublic(m);if(c==null)return null;var h=c.toString(16);if((h.length&1)==0)return h;else return '0'+h;}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt; this.RSAKey=RSAKey;}).call(sinaSSOEncoder);function getpass(pwd,servicetime,nonce,rsaPubkey){var RSAKey=new sinaSSOEncoder.RSAKey();RSAKey.setPublic(rsaPubkey,'10001');var password=RSAKey.encrypt([servicetime,nonce].join('//t')+'//n'+pwd);return password;}"; public SinaWeiboLogger(String username, String password) { this.username = username; this.password = password; //cookie policy, if you do not set, cookie rejected, set policy to save cookie information cookieStore = new BasicCookieStore(); CookieSpecProvider myCookie = new CookieSpecProvider() { public CookieSpec create(HttpContext context) { return new DefaultCookieSpec(); } }; Registry<CookieSpecProvider> rg = RegistryBuilder.<CookieSpecProvider> create().register("myCookie", myCookie) .build(); client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCookieSpecRegistry(rg).build(); get = new HttpGet(); post = new HttpPost(); } /** * Pre-login, use username base64 to encrypt and get the request, get the return value, use the return value to encrypt the user password to request again* * @throws IOException * @throws ClientProtocolException * @throws URISyntaxException */ private void preLogin() throws ClientProtocolException, IOException, URISyntaxException { // 1 su = new String(Base64.encodeBase64(URLEncoder.encode(this.username, "UTF-8").getBytes())); String preLoginUrl = "http://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su=" + su + "&rsakt=mod&client=ssologin.js(v1.4.15)&_=" + new Date().getTime(); get.setURI(new URI(preLoginUrl)); get.addHeader("Host", "login.sina.com.cn"); get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0"); get.addHeader("Accept", "*/*"); get.addHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"); get.addHeader("Accept-Encoding", "gzip, deflate"); get.addHeader("Referer", "http://login.sina.com.cn/"); get.addHeader("Connection", "keep-alive"); HttpResponse resp = client.execute(get); //Save the request and return the cookie. After logging in, you need to use cookies to request other pages. saveCookie(resp.getAllHeaders(), this.headerCookie); HttpEntity entity = resp.getEntity(); String cont = EntityUtils.toString(entity); // System.out.println(cont); cont = cont.replace("sinaSSOController.preloginCallBack(", ""); cont = cont.replace(")", ""); JSONObject json = JSONObject.parseObject(cont); this.retcode = json.getIntValue("retcode"); this.servertime = json.getLongValue("servertime"); this.pubkey = json.getString("pubkey"); this.rsakv = json.getString("rsakv"); this.is_openlock = json.getIntValue("is_openlock"); this.showpin = json.getIntValue("showpin"); this.exectime = json.getIntValue("exectime"); } private void saveCookie(Header[] headers, StringBuffer headerCookie) { for(Header h : headers) { if (h.getName().equals("Set-Cookie")) { headerCookie.append(h.getValue()).append(";"); } } } } /** * Log in to Sina Pass account, encrypt password, post request* * @return * * @throws IOException * @throws ClientProtocolException * @throws ScriptException * @throws NoSuchMethodException * @throws URISyntaxException */ private AccessToken accountLogin() throws NoSuchMethodException, ScriptException, ClientProtocolException, IOException, URISyntaxException { // 2 String loginUrl = "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=" + new Date().getTime(); post.setURI(new URI(loginUrl)); post.addHeader("Host", "login.sina.com.cn"); post.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0"); post.addHeader("Accept", "*/*"); post.addHeader("Content-Type", "application/x-www-form-urlencoded"); post.addHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"); post.addHeader("Accept-Encoding", "gzip, deflate"); post.addHeader("Referer", "http://login.sina.com.cn/"); post.addHeader("Connection", "keep-alive"); // Use js to encrypt the password, RSA, call the method in js ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("javascript"); se.eval(sina_js); if (se instanceof Invocable) { Invocable iv = (Invocable) se; sp = (String) iv.invokeFunction("getpass", this.password, this.servertime, this.nonce, this.pubkey); } List<NameValuePair> parms = new ArrayList<NameValuePair>(); parms.add(new BasicNameValuePair("entry", "account")); parms.add(new BasicNameValuePair("gateway", "1")); parms.add(new BasicNameValuePair("from", "")); parms.add(new BasicNameValuePair("savestate", "0")); parms.add(new BasicNameValuePair("savestate", "0")); parms.add(new BasicNameValuePair("useticket", "0")); parms.add(new BasicNameValuePair("pagerefer", "")); parms.add(new BasicNameValuePair("vsnf", "1")); parms.add(new BasicNameValuePair("su", su)); parms.add(new BasicNameValuePair("service", "sso")); parms.add(new BasicNameValuePair("servertime", servertime + "")); parms.add(new BasicNameValuePair("nonce", nonce)); parms.add(new BasicNameValuePair("pwencode", "rsa2")); parms.add(new BasicNameValuePair("rsakv", rsakv)); parms.add(new BasicNameValuePair("sp", sp)); parms.add(new BasicNameValuePair("sr", "1366*768")); parms.add(new BasicNameValuePair("encoding", "UTF-8")); parms.add(new BasicNameValuePair("cdult", "3")); parms.add(new BasicNameValuePair("domain", "sina.com.cn")); parms.add(new BasicNameValuePair("prelt", "51")); parms.add(new BasicNameValuePair("returntype", "TEXT")); post.setEntity(new UrlEncodedFormEntity(parms)); HttpResponse resp = client.execute(post); //Save the request and return the cookie. After logging in, you need to have a cookie. saveCookie(resp.getAllHeaders(), this.headerCookie); //Request return link JSONObject jsonObj = JSONObject.parseObject(EntityUtils.toString(resp.getEntity())); this.retcode = jsonObj.getIntValue("retcode"); this.uid = jsonObj.getString("uid"); this.nick = jsonObj.getString("nick"); this.domainurls = jsonObj.getJSONArray("crossDomainUrlList"); List<String> retMsg = new ArrayList<String>(); int i = 0 ؛ for (Object url : domainurls) { System.out.println("url:"+url.toString()); get.setURI(new URI(url.toString()+"&callback=sinaSSOController.doCrossDomainCallBack&scriptId=ssscript"+i+"&client=ssologin.js(v1.4.15)&_="+new Date().getTime())); resp = client.execute(get); retMsg.add(EntityUtils.toString(resp.getEntity())); i ++ ؛ } Oauth oauth = new Oauth(); try { String url = oauth.authorize("code"); get.setURI(new URI(url)); List<URI> allRedirectLocations = getAllRedirectLocations(url); for (URI uri : allRedirectLocations) { String retUrl = uri.toString(); int begin = retUrl.indexOf("code="); if (begin != -1) { int end = retUrl.indexOf("&", begin); if (end == -1) end = retUrl.length(); String code = retUrl.substring(begin + 5, end); if (code != null) { try{ AccessToken token = oauth.getAccessTokenByCode(code); return token; } catch (استثناء e) {E.PrintStackTrace () ؛ } } استراحة؛ } } } catch (WeiboException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public List<URI> getAllRedirectLocations(String link) throws ClientProtocolException, IOException{ List<URI> redirectLocations = null; CloseableHttpResponse response = null; try{ HttpClientContext context = HttpClientContext.create(); HttpGet httpGet = new HttpGet(link); //Add the request cookie to the request header httpGet.addHeader("Cookie", this.headerCookie.toString()); response = (CloseableHttpResponse) client.execute(httpGet, context); // Get all redirect locations redirectLocations = context.getRedirectLocations(); } finally{ if(response!=null){ response.close(); } } return redirectLocations; } /** * Post to Weibo* @param token Authentication Token * @param content Weibo content* @return * @throws Exception */ public static boolean sinaSendWeibo(String token,String content) throws Exception { boolean flag = false ; Timeline tm = new Timeline(token); try { Status status = tm.updateStatus(content); flag = true ; } catch (WeiboException e) { flag = false ; System.out.println(e.getErrorCode()); } return flag; } /** * Login*/ @SuppressWarnings("static-access") public void login(String context) { try { this.preLogin(); AccessToken at = this.accountLogin(); this.sinaSendWeibo(at.getAccessToken(),context); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (ScriptException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public HttpClient getClient() { return client; } public void setClient(HttpClient client) { this.client = client; } public HttpPost getPost() { return post; } public void setPost(HttpPost post) { this.post = post; } public HttpGet getGet() { return get; } public void setPost(HttpPost post) { this.post = post; } public HttpGet getGet() { return get; } public void setGet(HttpGet get) { this.get = get; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSu() { return su; } public void setSu(String su) { this.su = su; } public String getSp() { return sp; } public void setSp(String sp) { this.sp = sp; } public String getNonce() { return nonce; } public void setNonce(String nonce) { this.nonce = nonce; } public String getRsakv() { return rsakv; } public void setRsakv(String rsakv) { this.rsakv = rsakv; } public String getPubkey() { return pubkey; } public void setPubkey(String pubkey) { this.pubkey = pubkey; } public int getRetcode() { return retcode; } public void setRetcode(int retcode) { this.retcode = retcode; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getNick() { return nick; } public void setNick(String nick) { this.nick = nick; } public static String getSina_js() { return sina_js; } public BasicCookieStore getCookieStore() { return cookieStore; } public void setCookieStore(BasicCookieStore cookieStore) { this.cookieStore = cookieStore; } public static void main(String[] args) throws HttpException, IOException { new SinaWeiboLogger("WeiboLogger", "Password").login("xxxxx"); }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.