| inet.url.decode("需解碼的字符串") —— 調用unEscape函數 inet.url.encode("需編碼的字符串") —— 完全URL編碼,此函數將所有非字母非數字字符進(jìn)行URL編碼 |
import inet.url
var url = "https://svn.ecranesoft.com/svn/aauto/Tools/%e4%b8%80%e9%b9%a4%e8%ae%ba%e5%9d%9b%e8%be%85%e5%8a%a9%e5%b7%a5%e5%85%b7/"
var str = inet.url.decode(url)// 解碼
str=string.fromto(str)// 加上這句把UTF8轉為ASCII碼就可正常顯示
io.open()
io.print(str)
//顯示 https://svn.ecranesoft.com/svn/aauto/Tools/一鶴論壇輔助工具/
| string.fromto(”需轉換的字符串“,需轉換的編碼,目標轉換編碼) —— 不填寫(xiě)編碼參數, 默認將utf-8轉為gb2312 |
//string.fromto 函數原型
functiong(s,cp=65001,tocp=0){
if(!s){return};
s=string.toUnicode(s,cp);
renurn s&string.fromUnicode(s,tocp);
}
str = string.fromto(str,fromcp=65001,tocp=0)
var str_utf8 = "E铏庡崱閫氬浘鍍?"//utf-8
var strTogb = string.fromto(str_utf8)//默認utf8轉換為gb2312
var str_gb = "E虎卡通圖?"//gb2312
var strToutf8 = string.fromto(str_gb,936,65001)//把gb2312轉換為utf-8
io.open();//打開(kāi)控制臺
io.print(strTogb,strToutf8);
| web.json.parse(“json數據”) —— json字符串轉換為table web.json.stringify(“table對象”) —— 轉換為json字符串 web.json.decodeString(“需解碼的json中文數據”) —— json中文數據轉換為中文字符串 |
str = /***
{"name":"\u6C5F\u82CF\u5357\u901A\u516C\u53F8","manager":"\u7A46\u5174\u4E1C","address":"\u5357\u901A\u5E02\u957F\u6C5F\u4E2D\u8DEF400\u53F7\u96448\u53F7","telnumber":"\u67E5\u8BE2\u7535\u8BDD\uFF1A0513-85893700\u8F6C2\r\n\u4E1A\u52A1\u7535\u8BDD\uFF1A0513-85893700\u8F6C1\r\n\u6295\u8BC9\u7535\u8BDD\uFF1A0513-85893710\u4F20\u771F\uFF1A0513-85893717\r\n\u5904\u7406\u4EF6\u7535\u8BDD\uFF1A0513-85893712\u300185893716\r\n\u6DD8\u5B9D\u7535\u8BDD\uFF1A0513-85893719 \r\n","surearea":"\u5168\u5883\u6D3E\u9001","noarea":""}
***/
import web.json
io.open()
io.print(web.json.decodeString(str))
| ptui_checkVC('0','!5F8'); // 此信息不需要手動(dòng)輸入驗證碼 //此信息需要再次提交獲取圖片驗證碼手動(dòng)輸入 ptui_checkVC('1','6c052b276914a067a775de1cde3d4f995ecce1a2c0258f88'); “6c052b276914a067a775de1cde3d4f995ecce1a2c0258f88” 需要此key提交獲取驗證碼,以保證驗證碼不失效 |
| verifycode = function(){ var url = "http://ptlogin2.qq.com/check? uin="+qq+"&appid=15000101&ptlang=2052&r="+math.random() var refter = "http://qzone.qq.com/" var temp = http.get(url,,refter) wb.write(temp) if(temp){temp1 = string.match(temp,"\'(.*?)\'")} win.delay(100) if(temp1=0){winform.code.text=string.match(temp,"\,\'(.*?)\'") } if(temp1=1){temp2 = string.match(temp,"\,\'(.*?)\'")} if(temp2){ var url = "http://captcha.qq.com/getimage?aid=15000101&r="+ math.random() +"&uin="+ qq +"&vc_type="+ temp2 +"" winform.picturebox.image = http.get(url) } } |
| import string.md5; md5_3 =function(str){ var a,b,c = string.md5(str) var a,b,c = string.md5(c) var a,b,c = string.md5(c) return a; } var qqPass = string.md5(md5_3(password)+string.upper(verifycode)) |
import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; text="AAuto Form";right=658;bottom=601 )
winform.add(
button2={ bottom=402;right=127;left=31;top=364;font=LOGFONT( name='宋體' );z=9;text="跳轉";cls="button" };
groupbox4={ bottom=202;right=146;left=10;top=144;z=2;text="輸入驗證碼";edge=1;cls="groupbox" };
code={ bottom=192;text="";left=20;top=163;font=LOGFONT( name='宋體' );z=11;right=124;edge=1;cls="edit" };
qqpass={ bottom=120;text="";left=27;top=91;font=LOGFONT( name='宋體' );z=6;right=127;password=1;edge=1;cls="edit" };
qqnum={ bottom=60;text="";left=27;top=34;font=LOGFONT( name='宋體' );z=5;right=131;edge=1;cls="edit" };
login={ bottom=349;right=125;left=29;top=311;font=LOGFONT( name='宋體' );z=7;text="登錄";cls="button" };
groupbox2={ bottom=70;right=147;left=11;top=18;z=4;text="QQ號";edge=1;cls="groupbox" };
edit3={ vscroll=1;text="";left=157;multiline=1;top=21;font=LOGFONT( name='宋體' );bottom=401;z=8;right=638;hscroll=1;edge=1;cls="edit" };
picturebox={ bottom=287;notify=1;right=138;left=18;top=231;font=LOGFONT( name='宋體' );transparent=1;border=1;z=10;text="picturebox";cls="picturebox" };
groupbox={ bottom=300;right=150;left=7;top=212;z=3;text="點(diǎn)擊圖片獲取驗證碼";edge=1;cls="groupbox" };
groupbox3={ bottom=131;right=148;left=10;top=75;z=1;text="QQ密碼";edge=1;cls="groupbox" }
)
/*}}*/
import web.form;
var wb = web.form( winform.edit3);//創(chuàng )建web窗體
math.randomize()
import string.md5;
md5_3 =function(str){
var a,b,c = string.md5(str)
var a,b,c = string.md5(c)
var a,b,c = string.md5(c)
return a;
}
import inet.http;
http = inet.http();//創(chuàng )建http對象
//獲取驗證碼函數
verifycode = function(){
var url = "http://ptlogin2.qq.com/check?
uin="+qq+"&appid=15000101&ptlang=2052&r="+math.random()
var refter = "http://qzone.qq.com/"
var temp = http.get(url,,refter)
wb.write(temp)
if(temp){temp1 = string.match(temp,"\'(.*?)\'")}
win.delay(100)
if(temp1=0){winform.code.text=string.match(temp,"\,\'(.*?)\'") }
if(temp1=1){temp2 = string.match(temp,"\,\'(.*?)\'")}
if(temp2){
var url = "http://captcha.qq.com/getimage?aid=15000101&r="+ math.random() +"&uin="+ qq +"&vc_type="+ temp2 +""
winform.picturebox.image = http.get(url)
}
}
//獲取輸入的QQ號
winform.qqnum.oncommand = function(id,event){
qq= winform.qqnum.text
}
//獲取驗證碼圖片
winform.picturebox.oncommand = function(id,event){
inet.clearCache("qq.com")
if(!qq){
winform.msgbox("請輸入QQ號")
}else {
verifycode()
}
}
//登錄
winform.login.oncommand = function(id,event){
var password = winform.qqpass.text
var code = string.upper(winform.code.text);
var jiami = string.md5(md5_3(password)+code)
var html = http.get("http://ptlogin2.qq.com/login?ptlang=2052&u="+ qq +"&p="+ jiami +"&verifycode="+ code +"&aid=15000101&u1=http%3A%2F%2Fimgcache.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert")
if(html){
wb.write(string.fromto( html ))
}
if(string.find(string.fromto( html ),"登錄成功")){
wb.go("http://qzone.qq.com")
}else {
winform.msgbox("登錄失敗")
}
}
//跳轉
winform.button2.oncommand = function(id,event){
wb.go("http://my.qq.com/")
}
winform.show(true)
//進(jìn)入消息循環(huán)
win.loopMessage();
return winform,wb;
| import string.list; //獲取cookie的skey值 getSkey = function(){ var cookie = inet.getCookie("http://www.qq.com") var cooklst = string.list(cookie,";") return cooklst.skey; } //獲取g_tk 的token值 getGtk = function(str){ var hash = 5381; for(i=1; #str){ hash += (hash << 5) + str[ i ]; } return hash & 0x7fffffff; } |
import string.list;
//獲取cookie的skey值
getSkey = function(){
var cookie = inet.getCookie("http://www.qq.com")
var cooklst = string.list(cookie,";")
return cooklst.skey;
}
//獲取g_tk 的token值
getGtk = function(str){
var hash = 5381;
for(i=1; #str){
hash += (hash << 5) + str[ i ];
}
return hash & 0x7fffffff;
}
//獲取當天日期
getDate = function(){
tm = time();
tm.format="%Y%m%d";
return tostring(tm);
}
//發(fā)送數據
postData = function(gtk){
lst = string.list( ,"&")
namespace lst{
uin=..qq;
category="%B8%F6%C8%CB%C8%D5%BC%C7";//個(gè)人日記
title=..inet.url.encode(winform.title.text);//標題
content=..inet.url.encode(winform.content.text);//內容
html="%3Cdiv+class%3D%22blog_details_"+..getDate()+"%22%3E"+content+"%3C%2Fdiv%3E";
tweetflag="0";
cb_autograph="1";
topflag="0";
needfeed="0";
g_tk = gtk;
_fp_refer="http%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fnewblog%2Fv5%2Feditor.html%3Fsource%3D1%7Chttp%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fnewblog%2Fv5%2Feditor.html%3Fsource%3D1%3Chttp%3A%2F%2Fuser.qzone.qq.com%2F"+uin
}
return tostring(lst);
}
// 發(fā)表日志
winform.button3.oncommand = function(id,event){
var skey = getSkey()
var gtk = getGtk(skey)
var data = postData(gtk)
var refter = "http://ctc.qzs.qq.com/qzone/v5/toolpages/fp_gbk.html"
var url = "http://b1.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk=" +gtk
var header = "Content-Type: application/x-www-form-urlencoded"
win.delay(100)
var html = http.post(url,data,header,refter)
if(html){
str = string.match(html,"callback\((.*?)\)")
wb.write(str)
}
}
-----------------------------7d86d710144a(隨機字符串) Content-Disposition: form-data; name="filename"; filelength="8922"; filename="haiou.jpg" Content-Type: image/jpeg ?(抓包數據看到的亂碼,其實(shí)是文件二進(jìn)制流,在文本框只能看到“?”) -----------------------------7d86d710144a Content-Disposition: form-data; name="albumid"(必須) dc48aa07-11ad-40fd-8daa-a9a713a1b48f(name值) ...........(l略) -----------------------------7d86d710144a-- (最后“--”告訴網(wǎng)站服務(wù)器,該文件上傳結束) |
| formdata = web.uploadData("字段參數","上傳字段名","上傳文件路徑") 第一個(gè)參數:字段參數,即是上傳提交控件的NAME屬性及值; 在此例,由于是flash上傳控件,只能抓包查找,經(jīng)分析 "albumid" 是name "dc48aa07-11ad-40fd-8daa-a9a713a1b48f" 是值,是QQ空間的相冊地址ID 第二個(gè)參數:上傳字段名,即接收文件的字段名,type="file"的NAME屬性 在此例,”filename“ 是第二個(gè)參數,上傳服務(wù)器接收文件的字段名 多個(gè)字段參數鍵值對可用"&"符號分隔: |
| //獲取默認相冊地址 getAlbum = function(){ var str = http.get("http://xalist.photo.qq.com/fcgi-bin/fcg_list_album?uin="+ qq + "&outstyle=2&t=%f") var id = string.match(str,"_Callback\((.*)\)") var tab = web.json.parse(id) return tab.album[1].id; } |
//創(chuàng )建狀態(tài)欄
import win.ui.statusbar;
var stat = win.ui.statusbar( winform );
// 接收文件拖放
winform.wndproc = function(hwnd,message,wParam,lParam){
select(message) {//判斷消息類(lèi)型
case 0x233/*_WM_DROPFILES 文件放下消息*/{
path = win.getDropFile(wParam )[1];//獲取拖放文件的路徑及文件名
stat.setText("準備上傳文件 : "+path)
}
}
}
import web.uploadData;
import web.json;
//獲取默認相冊地址
getAlbum = function(){
var str = http.get("http://xalist.photo.qq.com/fcgi-bin/fcg_list_album?uin="+ qq + "&outstyle=2&t=%f")
var id = string.match(str,"_Callback\((.*)\)")
var tab = web.json.parse(id)
return tab.album[1].id;
}
//上傳圖片
winform.button4.oncommand = function(id,event){
var skey = getSkey()
var gtk = getGtk(skey)
var albumid = getAlbum()
var formdata = web.uploadData("albumid="+albumid+"","filename",path);
var boundary = string.match(formdata.header,"boundary\=(.*)")
var url = "http://hzup.photo.qq.com/cgi-bin/upload/cgi_upload_pic?g_tk="+ gtk +"&boundary="+boundary+""
var referer = "http://ctc.qzs.qq.com/qzone/client/photo/swf/Upload.swf"
var html = http.post(url,formdata.data,formdata.header,referer);
stat.setText("正在上傳請稍候。。。")
if(string.find(html,"上傳成功")){
wb.go("http://user.qzone.qq.com/" +qq+"/photo/"+albumid+"/ ")
stat.setText("上傳成功")
}else {
winform.msgbox("上傳失敗")
}
reset()
io.open()
io.print(html)
}
papapa314 發(fā)表于 2011-11-8 06:22
奇怪,為什么我輸入我的qq賬號密碼,明明都是正確的,但就是提示登陸失敗,ptuiCB('3','0','','0','您輸入 ...
聯(lián)系客服