黑帽联盟

 找回密码
 会员注册
查看: 2650|回复: 1
打印 上一主题 下一主题

[基础服务] curl模拟登录网页(定位原创发布)

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2016-10-21 20:17 编辑

    首先声明:此测试,本人亲测成功,可用!

    目地:了解curl命令的使用,以及用途,功能的强大

    有时在批量抓取网站页面内容时,是需要处于登录状态的,否则无法获取。curl这个强大的工具可以完成这个工作。之前最好也先了解一下http POST方法,网站登录大都是用这个办法。

    这里是以百度为例(下面是我个人的测试):

    1、先保存用户变量
    • [root@cbh4 /]# ACCOUNT=qasxc5  (这里的qasxc5是我的百度用户名)
    • [root@cbh4 /]# PASS=cnblackhat  (这里的cnblackhat换成你的百度用户密码)
    • [root@cbh4 /]# echo $ACCOUNT


    [color=rgb(51, 51, 51) !important]复制代码

    2、访问百度,取得cookie,保存到cookies. 查看文件可知cookie名为BAIDUID
    • [root@cbh4 /]# curl -c cookies www.baidu.com
    • 以上命令回车会出现一大堆代码信息,不要去理会,与此同时,在你的执行目录下会生成一个文件名为:cookies

    [color=rgb(51, 51, 51) !important]复制代码

    以下是cookies的内容:
    a1.jpg


    3、带着cookie访问这个地址,得到$TOKEN$
    • [root@cbh4 /]# TOKEN=$(curl -b cookies -sS "https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&class=login&tt=$(date +%s)&logintype=dialogLogin" | tr "'" '"' | json_pp -t dumper -json_opt pretty | grep token | cut -d\' -f4)
    • [root@cbh4 /]# echo $?
    • 0
    • 执行以上命令,执行之后,检测命令执行成功,返回状态是0


    [color=rgb(51, 51, 51) !important]复制代码

    以上你运行第一条命令你可能会遇到错误:-bash: json_pp command not found
    json_pp依赖perl安装包,你下载个perl安装包安装即可,yum直接安装不行,已测过。

    perl安装包下载地址(版本是5.16.3):


    首先声明:此测试,本人亲测成功,可用!

    目地:了解curl命令的使用,以及用途,功能的强大

    有时在批量抓取网站页面内容时,是需要处于登录状态的,否则无法获取。curl这个强大的工具可以完成这个工作。之前最好也先了解一下http POST方法,网站登录大都是用这个办法。

    这里是以百度为例(下面是我个人的测试):

    1、先保存用户变量
    • [root@cbh4 /]# ACCOUNT=qasxc5  (这里的qasxc5是我的百度用户名)
    • [root@cbh4 /]# PASS=cnblackhat  (这里的cnblackhat换成你的百度用户密码)
    • [root@cbh4 /]# echo $ACCOUNT


    [color=rgb(51, 51, 51) !important]复制代码

    2、访问百度,取得cookie,保存到cookies. 查看文件可知cookie名为BAIDUID
    • [root@cbh4 /]# curl -c cookies www.baidu.com
    • 以上命令回车会出现一大堆代码信息,不要去理会,与此同时,在你的执行目录下会生成一个文件名为:cookies

    [color=rgb(51, 51, 51) !important]复制代码

    以下是cookies的内容:
    a2.jpg


    3、带着cookie访问这个地址,得到$TOKEN$
    • [root@cbh4 /]# TOKEN=$(curl -b cookies -sS "https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&class=login&tt=$(date +%s)&logintype=dialogLogin" | tr "'" '"' | json_pp -t dumper -json_opt pretty | grep token | cut -d\' -f4)
    • [root@cbh4 /]# echo $?
    • 0
    • 执行以上命令,执行之后,检测命令执行成功,返回状态是0


    [color=rgb(51, 51, 51) !important]复制代码

    以上你运行第一条命令你可能会遇到错误:-bash: json_pp command not found
    json_pp依赖perl安装包,你下载个perl安装包安装即可,yum直接安装不行,已测过。

    perl安装包下载地址(版本是5.16.3):
    游客,如果您要查看本帖隐藏内容请回复



    perl安装步骤:
    • [root@cbh4 perl-5.16.3]# ./configure.gnu
    • [root@cbh4 perl-5.16.3]# make
    • [root@cbh4 perl-5.16.3]# make test
    • [root@cbh4 perl-5.16.3]# make install

    [color=rgb(51, 51, 51) !important]复制代码

    安装完之后,在执行前面那条命令就不会报错了。


    4、带着cookie , $TOKEN$对这个地址访问
    • [root@cbh4 /]# curl -b cookies -c cookies https://passport.baidu.com/v2/api/?logincheck&token=$TOKEN[        DISCUZ_CODE_4        ]amp;tpl=mn&apiver=v3&tt=$(date +%s)&username=$ACCOUNT&isphone=false
    • [1] 20919
    • [2] 20920
    • [3] 20921
    • [4] 20922
    • [5] 20923
    • [6] 20924
    • [root@cbh4 /]# ({"errno":0,"codestring":null,"index":null})
    • [1]   Done                    curl -b cookies -c cookies https://passport.baidu.com/v2/api/?logincheck
    • [2]   Done                    token=$TOKEN$
    • [3]   Done                    tpl=mn
    • [4]   Done                    apiver=v3
    • [5]-  Done                    tt=$(date +%s)
    • [6]+  Done                    username=$ACCOUNT
    • [root@cbh4 /]#

    [color=rgb(51, 51, 51) !important]复制代码

    返回下面内容:
    ({"errno":0,"codestring":null,"index":null})

    (#curl -b 和 -c 参数同时使用表示当前目录下的cookies文件读取 cookie 数据,如果接收新的到的 cookie,就写到同一个文件里去


    5、使用用户信息登陆百度网盘:
    • [root@cbh4 /]# curl -b cookies -c cookies --compressed -sS 'https://passport.baidu.com/v2/api/?login' -H 'Content-Type: application/x-www-form-urlencoded' --data "staticpage=http%3A%2F%2Fpan.baidu.com%2Fres%2Fstatic%2Fthirdparty%2Fpass_v3_jump.html&charset=utf-8&token=$TOKEN&tpl=mn&apiver=v3&tt=$(date +%s083)&codestring=&safeflg=0&u=http%3A%2F%2Fpan.baidu.com%2F&isPhone=false&quick_user=0&logintype=basicLogin&username=$ACCOUNT&password=$PASS&verifycode=&mem_pass=on&ppui_logintime=57495&callback=parent.bd__pcbs__ax1ysj" | grep -F err_no


    [color=rgb(51, 51, 51) !important]复制代码

    会返回以下信息:
    a3.jpg

    我这里错误码显示为0,表示成功,可能是别的值



    6、登陆成功之后就可以调用网盘 API了,验证是否成功

    6.1   获取容量:
    • <span style="line-height: 1.5;">[root@cbh4 /]#</span><span style="line-height: 1.5;"> </span>curl -b cookies -c cookies 'http://pan.baidu.com/api/quota'

    [color=rgb(51, 51, 51) !important]复制代码

    返回如下信息:
    a4.jpg

    信息解释:
    used:1200946201297       (容量使用了多少)
    total:2209223802880       (总共容量为多大)


    6.2   列出根目录下的文件信息:
    • <span style="line-height: 1.5;">[root@cbh4 /]#</span><span style="line-height: 1.5;"> </span>curl -b cookies -c cookies 'http://pan.baidu.com/api/list' | json_pp

    [color=rgb(51, 51, 51) !important]复制代码

    以下是我网盘里面的内容(如下,内容比较多,就不一一列举了):
    a5.jpg



    a6.jpg


    6.3   当然也可以针对指定目录列出内容:
    • <span style="line-height: 1.5;">[root@cbh4 /]#</span><span style="line-height: 1.5;"> </span>curl -b cookies -c cookies 'http://pan.baidu.com/api/list?dir=/黑帽远控入门教程' | json_pp

    [color=rgb(51, 51, 51) !important]复制代码

    以下是我根目录下面的目录:比如这里的“黑帽远控入门教程”目录,内容如下:
    a7.jpg

    a8.jpg


    6.4   这里也可以新建目录
    • <span style="line-height: 1.5;">[root@cbh4 /]#</span><span style="line-height: 1.5;"> </span>curl -b cookies -c cookies 'http://pan.baidu.com/api/create' -F path=/黑帽官网bbs.cnblackhat.com -F isdir=1 -F size= -F block_list='[]' -F method=post

    [color=rgb(51, 51, 51) !important]复制代码

    返回如下信息(以下涉及到字符编码问题,中文在平台上不显示,中文已被替换,但在下面检查的时候,是存在的):
    a9.jpg

    这里我新建的目录是“黑帽官网bbs.cnblackhat.com”
    到浏览器上查看一下,目录成功创建与否:





    附注:
    • 第二步中取得TOKEN时,要解析返回的json数据,可以不用json_pp, 也可以用别的工具,网上可以搜到不少,作者原文用的是jshon
    • 第四步登录中的用户信息,各字段如下(参考原作):
      staticpage:http://www.baidu.com/cache/user/html/v3Jump.html // baidu登录后跳转的地址
      charset:UTF-8 // 编码字符集
      token:$TOKEN$
      tpl:mn
      apiver:v3 //apiver 的值是固定的 API的版本号
      tt:当前时间
      codestring:留空
      isPhone:false //如果用手机号码登录则ture 否则为 false
      safeflg:0
      u:http://www.baidu.com/
      quick_user:0
      usernamelogin:1
      splogin:rate
      username:用户名
      password:密码明文
      verifycode: //验证码,如果没要求验证码,就为空
      mem_pass:on //记住密码
      ppui_logintime:5000 //是一些登录用时间的,给个7000~10000的随机数就好了
      callback:parent.bdpcbsoa36qm


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    0

    主题

    0

    听众

    66

    积分

    黑帽菜鸟

    Rank: 1

  • TA的每日心情
    奋斗
    2018-7-5 17:37
  • 签到天数: 60 天

    [LV.6]常住居民II

    谢谢分享
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部