简单的获取网页cookie案例

2022-06-11 Views Cookie997字5 min read

例如一个网页的原始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

EOF