简单的获取网页cookie案例
例如一个网页的原始cookie是
uu=hfsjfyesu;
登录成功后的cookie是
userId=558456454; token=wwwdwblogcnwwwdwblogcnwwwdwblogcnwwwdwblogcnwwwdwblogcn; uu=hfsjfyesu; pin=sirhexs
那么我们先写一个if语句判断是否登录成功
if(webcookie:find"token=")then
--上面这个if的意思是判断webcookie里面是否存在“token=”这个字符串
--这里是登录成功后要进行的操作,我们在这里写我们的cookie截取规则
end
然后我们根据规律和代码api写一个截取token的规则
要用到的代码:
str="左中右"
--取字符串左边
左=str:match("(.+)中")
--取字符串中间
中=str:match("左(.-)右")
--取字符串右边
右=str:match("中(.+)")
实现:
if(webcookie:find"token=")then
cookie="token="..webcookie:match("token=(.-)uu=")
--上面这行的意思是截取“token=”到“uu=”中间的这段字符串,然后拼接到“token=”的后面,“..”这两个点相当于一个加号,用来拼接两端字符串。
mycookietxt.setText(cookie)--设置文本内容
cookielay.setVisibility(View.VISIBLE)--显示控件
end
这就完成了一段cookie的截取了
完整代码参考(以饿了么为例):
require "import"
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "layout"
import "android.webkit.CookieSyncManager"
import "android.webkit.CookieManager"
import "android.content.Context"
import "android.content.Intent"
import "android.net.Uri"
import "android.view.View"
--上面为导入的包,看不懂就不要弄这部分
activity.setTheme(R.Theme_Blue)
--设置标题
activity.setTitle("饿了么Cookie")
activity.setContentView(loadlayout(layout))
----------------------------------------------------
--如果想获取其他网页的cookie也不需要太大的变动,只需更改第loginurl值和相关的if语句。
----------------------------------------------------
--登录链接
loginurl="https://tb.ele.me/wow/msite/act/login/?loginby=sns&redirect=https://h5.ele.me/minisite/pages/my/index?spm=a2ogi.13147251.0.0&spm-pre=a2ogi.13147251.0.0&spm=a2f6g.14291182.ebridge.login"
--加载登录页面
web.loadUrl(loginurl)
--设置网页cookie函数
function setCookie(context,url,content)
CookieSyncManager.createInstance(context)
local cookieManager = CookieManager.getInstance()
cookieManager.setAcceptCookie(true)
cookieManager.setCookie(url, content)
CookieSyncManager.getInstance().sync()
end
--获取cookie函数
function getCookie(url)
local cookieManager = CookieManager.getInstance();
return cookieManager.getCookie(url);
end
--删除网页cookie函数
function delCookie()
local cookieManager = CookieManager.getInstance()
cookieManager.removeSessionCookie()
cookieManager.removeAllCookie()
end
--网页状态监听
web.setWebViewClient{
shouldOverrideUrlLoading=function(view,url)
--Url即将跳转
end,
onPageStarted=function(view,url,favicon)
--网页加载
end,
onPageFinished=function(view,url)
--网页加载完成
--获取当前网页的cookie
webcookie=getCookie(url)
--判断cookie是否为空
if webcookie~=nil then
--其他网页cookie的截取 只需改下面这个if语句
if(webcookie:find"SID=")then
cookie=webcookie
mycookietxt.setText(cookie)--设置文本内容
cookielay.setVisibility(View.VISIBLE)--显示控件
end
end
end}
--复制按钮
cklaymyck.onClick=function()
import "android.content.Context"
activity.getSystemService(Context.CLIPBOARD_SERVICE).setText(cookie)
print("复制成功")
end
--重新获取按钮
cklaycxhqck.onClick=function()
cookielay.setVisibility(View.GONE)--隐藏控件
delCookie(web.getUrl())
cookie=""
os.execute("rm -rf /data/data/"..this.packageName.."/cache/")
os.execute("rm -rf /data/data/"..this.packageName.."/files/data/")
-- web.reload()--刷新网页
web.loadUrl(weburl)--加载网页
end
其它几个常用的软件抓取ck的关键代码:
京东
loginurl="https://plogin.m.jd.com/login/login?appid=445&returnurl=https%3A%2F%2Fm.healthjd.com%2F%3Fyyjdfromflag%3Dlogin"
if(webcookie:find"pt_key")then
--正则截取ck
cookie0=webcookie:match("pt_key=(.-)pt_token")
--补全cookie
cookie="pt_key="..cookie0
if(cookie:find"pwdt_id") then
cookie=cookie:match("(.+)pwdt_id")
end
mycookietxt.setText(cookie)--设置文本内容
cookielay.setVisibility(View.VISIBLE)--显示控件
end
美团
loginurl="https://passport.meituan.com/useraccount/ilogin?risk_partner=-1&risk_app=-1&risk_platform=3&backurl=https://i.meituan.com/account"
if(webcookie:find"token=")then
token="token="..webcookie:match("token=(.-);")
userId="userId="..webcookie:match("userId=(.-);")
cookie=userId.."&"..token
mycookietxt.setText(cookie)--设置文本内容
cookielay.setVisibility(View.VISIBLE)--显示控件
end
网易云
loginurl="https://y.music.163.com/m/login?targetUrl=/creatorcenter#/phone"
if(webcookie:find"MUSIC_U")then
--正则截取ck
cookie0=webcookie:match("MUSIC_U=(.+)")
--补全cookie
cookie="MUSIC_U="..cookie0
while cookie:find";" do
cookie=cookie:match("(.+);")
end
mycookietxt.setText(cookie)--设置文本内容
cookielay.setVisibility(View.VISIBLE)--显示控件
end
参考文章:
https://www.kejiwanjia.com/jiaocheng/96463.html