.版本 2
.支持库 spec
.程序集 qzone
.程序集变量 cx_代理, 文本型
.程序集变量 cx_cookie, 文本型
.程序集变量 cx_uin, 文本型
.程序集变量 cx_g_tk, 文本型
.程序集变量 cx_qzonetoken, 文本型
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
.子程序 setcookie, 逻辑型, 公开
.参数 cs_cookie, 文本型
.局部变量 jb_网页返回, 文本型
cx_cookie = cs_cookie
cx_uin = 网页_取单条Cookie (cx_cookie, “uin”, 真)
cx_g_tk = 编码_运行JS代码 (“function getG_tk(skey){var hash=5381;for(var i=0,len=skey.length;i<len;++i){hash+=(hash<<5)+skey.charCodeAt(i);};return hash&2147483647;}”, “getG_tk”, 网页_取单条Cookie (cx_cookie, “p_skey”, 真))
.判断循环首 (取文本左边 (cx_uin, 1) = “o” 或 取文本左边 (cx_uin, 1) = “0”)
cx_uin = 取文本右边 (cx_uin, 取文本长度 (cx_uin) - 1)
.判断循环尾 ()
调试输出 (cx_uin, cx_g_tk)
jb_网页返回 = UTF8到文本 (网页_访问_对象 (“https://user.qzone.qq.com/” + cx_uin, , , cx_cookie))
' window.g_qzonetoken = (function(){ try{return "f9b8230a4d1c349a82b0c98ebf4240550d75365ad2aa82ec9ec9824f9238cdcdb28573259c0fc6ffdb98";} catch(e) {var xhr = new XMLHttpRequest();xhr.withCredentials = true;xhr.open('post', '//h5.qzone.qq.com/log/post/error/qzonetoken', true);xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');xhr.send(e);}})();
cx_qzonetoken = 文本_取出中间文本 (jb_网页返回, “g_qzonetoken = (function(){ try{return ” + #引号, #引号)
调试输出 (cx_qzonetoken)
返回 (cx_qzonetoken ≠ “”)
.子程序 do, 逻辑型, 公开
.参数 cs_图片, 字节集
.参数 cs_内容, 文本型
.参数 cs_异常描述, 文本型, 参考
.局部变量 jb_网页返回, 文本型
.局部变量 jb_返回头, 文本型
.局部变量 jb_json, 类_json
.局部变量 jb_lloc, 文本型
.局部变量 jb_sloc, 文本型
.局部变量 jb_type, 文本型
.局部变量 jb_width, 文本型
.局部变量 jb_height, 文本型
.局部变量 jb_albumid, 文本型
.局部变量 jb_pic_bo, 文本型
.局部变量 data, 文本型
.计次循环首 (2, )
jb_网页返回 = UTF8到文本 (网页_访问_对象 (“https://up.qzone.qq.com/cgi-bin/upload/cgi_upload_image?g_tk=” + cx_g_tk + “&qzonetoken=” + cx_qzonetoken + “&g_tk=” + cx_g_tk, 1, “filename=filename&uin=” + cx_uin + “&skey=” + 编码_URL编码 (网页_取单条Cookie (cx_cookie, “skey”, 真)) + “&zzpaneluin=” + cx_uin + “&zzpanelkey=&p_uin=” + cx_uin + “&p_skey=” + 网页_取单条Cookie (cx_cookie, “p_skey”, 真) + “&qzonetoken=” + cx_qzonetoken + “&uploadtype=1&albumtype=7&exttype=0&refer=shuoshuo&output_type=jsonhtml&charset=utf-8&output_charset=utf-8&upload_hd=1&hd_width=2048&hd_height=10000&hd_quality=96&backUrls=http%3A%2F%2Fupbak.photo.qzone.qq.com%2Fcgi-bin%2Fupload%2Fcgi_upload_image%2Chttp%3A%2F%2F119.147.64.75%2Fcgi-bin%2Fupload%2Fcgi_upload_image&url=https%3A%2F%2Fup.qzone.qq.com%2Fcgi-bin%2Fupload%2Fcgi_upload_image%3Fg_tk%3D2063894956&base64=1&jsonhtml_callback=callback&picfile=” + 编码_URL编码 (编码_BASE64编码 (cs_图片), 真, 真) + “&qzreferrer=https%3A%2F%2Fuser.qzone.qq.com%2F” + cx_uin, cx_cookie, , , jb_返回头, , 真, , cx_代理))
.如果真 (jb_网页返回 ≠ “” 或 jb_返回头 ≠ “”)
跳出循环 ()
.如果真结束
.计次循环尾 ()
' 调试输出 (jb_网页返回)
' <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><script type="text/javascript">document.domain="user.qzone.qq.com";frameElement.callback({"data":{"pre":"//photogz.photo.store.qq.com/psc?/V53qHT0O24jv2z1VC2Tn1KoxVg3xJOyo/ruAMsa53pVQWN7FLK88i5ht.weeT7g4KWpTSNTYtADHlwVnGZjdMdR1cdyosUO1X1mR4Ig3q1qSwINgfMsZU6ULMWPOX.7DnRjt6OHGFNr4!/a&bo=EAHtAAAAAAARENs!","url":"//photogz.photo.store.qq.com/psc?/V53qHT0O24jv2z1VC2Tn1KoxVg3xJOyo/ruAMsa53pVQWN7FLK88i5ht.weeT7g4KWpTSNTYtADHlwVnGZjdMdR1cdyosUO1X1mR4Ig3q1qSwINgfMsZU6ULMWPOX.7DnRjt6OHGFNr4!/b&bo=EAHtAAAAAAARENs!","lloc":"NR8AVjZiQ2dBeU16STJNamt5TnpJMVB3KnZYOUNnY3g4IQcAcGhvdG9neg!!","sloc":"NR8AVjZiQ2dBeU16STJNamt5TnpJMVB3KnZYOUNnY3g4IQcAcGhvdG9neg!!","type":17,"width":272,"height":237,"albumid":"V53qHT0O24jv2z1VC2Tn1KoxVg3xJOyo","totalpic":0,"limitpic":10000,"origin_url":"//r.photo.store.qq.com/psc?/V53qHT0O24jv2z1VC2Tn1KoxVg3xJOyo/ruAMsa53pVQWN7FLK88i5ht.weeT7g4KWpTSNTYtADHlwVnGZjdMdR1cdyosUO1X1mR4Ig3q1qSwINgfMsZU6ULMWPOX.7DnRjt6OHGFNr4!/o","origin_uuid":"","origin_width":0,"origin_height":0,"contentlen":910},"ret":0});</script></body></html>
jb_网页返回 = 文本_取出中间文本 (jb_网页返回, “callback(”, “);”)
jb_json.解析 (jb_网页返回)
jb_lloc = jb_json.取通用属性 (“data.lloc”)
jb_sloc = jb_json.取通用属性 (“data.sloc”)
jb_type = jb_json.取通用属性 (“data.type”)
jb_width = jb_json.取通用属性 (“data.width”)
jb_height = jb_json.取通用属性 (“data.height”)
jb_albumid = jb_json.取通用属性 (“data.albumid”)
jb_pic_bo = jb_json.取通用属性 (“data.pre”)
jb_pic_bo = 文本_取出中间文本 (jb_pic_bo + “&”, “bo=”, “&”)
.如果 (jb_lloc ≠ “”)
data = “,” + jb_albumid + “,” + jb_lloc + “,” + jb_sloc + “,” + jb_type + “,” + jb_height + “,” + jb_width + “,,” + jb_height + “,” + jb_width
.计次循环首 (2, )
jb_网页返回 = UTF8到文本 (网页_访问_对象 (“https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?qzonetoken=” + cx_qzonetoken + “&g_tk=” + cx_g_tk, 1, “syn_tweet_verson=1¶mstr=1&pic_template=&richtype=1&richval=” + 编码_URL编码 (data, 真, 真) + “&special_url=&subrichtype=1&pic_bo=” + jb_pic_bo + “%09” + jb_pic_bo + “&who=1&con=” + 编码_URL编码 (cs_内容, 真, 真) + “&feedversion=1&ver=1&ugc_right=1&to_sign=0&hostuin=” + cx_uin + “&code_version=1&format=fs&qzreferrer=https%3A%2F%2Fuser.qzone.qq.com%2F” + cx_uin, cx_cookie, , , jb_返回头, , 真, , cx_代理))
.如果真 (jb_网页返回 ≠ “” 或 jb_返回头 ≠ “”)
跳出循环 ()
.如果真结束
.计次循环尾 ()
调试输出 (jb_网页返回)
' <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><script type="text/javascript"> var cb;try{document.domain="user.qzone.qq.com";cb=frameElement.callback;}catch(e){try{document.domain="user.qzone.qq.com";cb=frameElement.callback;}catch(e){document.domain="user.qzone.qq.com";cb=frameElement.callback;}} frameElement.callback({"attach":"","code":0,"feedinfo":"","message":"","needVerify":0,"now":1609502536,"republish":0,"secret":0,"subcode":0,"tid":"f568a88a480fef5fa5e00100","vote":""}); </script></body></html>
jb_网页返回 = 文本_取出中间文本 (jb_网页返回, “callback(”, “);”)
调试输出 (jb_网页返回)
jb_json.解析 (jb_网页返回)
cs_异常描述 = jb_json.取通用属性 (“message”)
返回 (jb_json.取通用属性 (“tid”) ≠ “”)
.否则
cs_异常描述 = “图片上传失败”
返回 (假)
.如果结束