51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

简单的获取网页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

赞(0)
未经允许不得转载:工具盒子 » 简单的获取网页cookie案例