鱼C论坛

 找回密码
 立即注册
查看: 969|回复: 12

爬虫问题-跪求思路

[复制链接]
发表于 2018-10-22 21:58:05 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 小强工作室 于 2018-10-23 09:36 编辑

base_url="http://www.xuekeedu.com/softlist/sx-g1-type3-v89/index-37.html?level=1"
down_page="http://www.xuekeedu.com/s336504.html"
down_url="http://xxfile.xuekeedu.com/UpLoadFiles/2015-1/25/XiaoXue201501251328023372480.doc?sn=6f62446f7821f1a9e36ee244eec276bc+后面是cookie"

问题:我的思路是找到sn的值,然后拼接网址完成下载,可是从网页中找不到。跪求办法或其它思路

第一张图.jpg
第二张图.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 22:37:28 From FishC Mobile | 显示全部楼层
应该在cookie里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 00:21:22 From FishC Mobile | 显示全部楼层
这个网站是动态还是静态的?
电脑暂时不在身边,看不到。
首先,用右键,查看网页源代码
看一下网站类型

纯静态的话,直接解析

半动半静加密混淆的阅读网站的js代码,看代码进行解码等操作,看离下载按钮最近的id就对了,很少会是class

纯动态的看数据来源,伪造请求获取链接

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 02:55:46 | 显示全部楼层
好像是一个跳转链接 http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=336504     urlid后面变不变不知道 但是soft后面id就是你下载文件的id
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 02:59:39 | 显示全部楼层
这个跳转链接里面有response headers有下载地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 03:29:44 | 显示全部楼层
import requests
import re
url = 'http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=336504'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
           'Cookie' : 'xxxxxx‘}

a = requests.get(url,headers=headers)

down_url = re.findall('"(.*?)"',a.headers['Content-Disposition'])
print(down_url)

cookie 你自己传你自己的 最后down url我直接给你正则匹配出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 09:06:54 | 显示全部楼层
谢谢楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-23 09:27:35 | 显示全部楼层
余生予你 发表于 2018-10-23 02:55
好像是一个跳转链接 http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=336504     urlid后面变不变 ...

这个跳转链接 http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=336504  在那里找的?能贴张图吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 10:19:27 | 显示全部楼层
问一下,你们不需要登录就能获取下载链接???  
我这里需要登录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-23 10:56:00 | 显示全部楼层
wongyusing 发表于 2018-10-23 10:19
问一下,你们不需要登录就能获取下载链接???  
我这里需要登录

是需要登录的。请大神帮忙看看呗,给我个思路
登录框.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 11:05:26 | 显示全部楼层
讲一下,这个链接结构是下面的这种形式组成的,
下载的域名 http://xxfile.xuekeedu.com/UpLoadFiles
XiaoXue201501121220006524872.doc
?sn=83541123b6cdf30ba42d10ef78267cf8
加上base64编码的文件名。  
sn的值应该是固定的。  
不属于曲奇的部分,经测试,sn应该是由某一段js生成的或后端固定传输的,是每个课件的固定值。  
关键是一下子找不到那一段js代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 11:39:00 | 显示全部楼层
js代码找到了,但是,关键点还是在sn参数哪里,其他参数都是明文的。  
唯独sn参数,没看错的话,需要axaj从后端获取,sn参数是一个固定的值
  1. function downloadSoft() {
  2.     download.onClick();
  3. }

  4. var payLayer = null;
  5. var wxtLayer = null;
  6. function hidedownloadLayer() {
  7.     layer.close(wxtLayer);
  8. }
  9. function openscan() {
  10.     payLayer = layer.open({
  11.         type: 2,
  12.         area: ['530px', '440px'],
  13.         shadeClose: false,
  14.         closeBtn: 0,
  15.         title: false,
  16.         content: [$('#hid_OrderCenterUrl').val() + '/soft/xx?button=' + encodeURIComponent('立即下载') + '&softid=' + $("#hid_softid").val()+ '&sourceid=' + $("#hid_sourceid").val() + '&callback=downloadSoft', 'no']
  17.     });
  18. }
  19. function closeLayer() {
  20.     layer.close(payLayer);
  21. }
  22. function openDialog(msg) {
  23.     layer.open({
  24.         type: 1
  25.         , title: '下载错误提示消息'
  26.         , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
  27.         , area: ['500px', '300px']
  28.         , id: 'layerInfo'//防止重复弹出
  29.         , content: '<div style="padding-top:80px; text-align:center">' + msg + '</div>'
  30.         , btn: '确认'
  31.         , btnAlign: 'c' //按钮居中
  32.         , shade: 0 //不显示遮罩
  33.         , yes: function () {
  34.             layer.closeAll();
  35.         }
  36.     });
  37. }
  38. var download = {
  39. };
  40. //下载点击
  41. download.onClick = function () {
  42.     var softId = $("#hid_softid").val();
  43.     $.ajax({
  44.         url: "http://www.xuekeedu.com/download.aspx?action=checkpayinfo&SoftId=" + softId,
  45.         type: "get",
  46.         contentType: "application/json",
  47.         dataType: "json",
  48.         data: "",
  49.         cache: false,
  50.         error: function (d) {
  51.             openDialog("获取用户下载许可失败!");
  52.             console.log("获取用户下载许可失败," + d.errMsg);
  53.         },
  54.         success: function (d) {
  55.             //errNo
  56.             if (d.errNo > 0) {
  57.                 //提示充值
  58.                 if (d.errNo >= 13 && d.errNo <= 17) {
  59.                     openscan();
  60.                 }
  61.                 else if (d.errNo == 1) {
  62.                     xiaoxue.popLogin();
  63.                 }
  64.                     //网校通过期提示
  65.                 else if (d.errNo >= 18&&d.errNo<=21) {
  66.                     if (d.errNo == 18 || d.errNo == 19) {
  67.                         var area = ['530px', '200px'];
  68.                     }
  69.                     else {
  70.                         var area = ['530px', '260px'];
  71.                     }
  72.                     wxtLayer = layer.open({
  73.                         type: 2,
  74.                         area: area,
  75.                         shadeClose: false,
  76.                         closeBtn: 0,
  77.                         title: false,
  78.                         content: ['http://www.xuekeedu.com/PopWxt.aspx?resultCode=' + encodeURIComponent(d.errNo) + '&resultMessage=' + encodeURIComponent(d.errMsg), 'no']
  79.                     });

  80.                 }
  81.                     //网校通超过下载次数限制
  82.                 else if (d.errNo == 23 || d.errNo == 24) {
  83.                     var area = ['580px', '415px'];
  84.                     if (d.errNo == 24) {
  85.                         area = ['580px', '260px'];
  86.                     }
  87.                     wxtLayer = layer.open({
  88.                         type: 2,
  89.                         area: area,
  90.                         shadeClose: false,
  91.                         closeBtn: 0,
  92.                         title: false,
  93.                         content: ['http://www.xuekeedu.com/PopWxt_Account.aspx?resultCode=' + encodeURIComponent(d.errNo) + '&resultMessage=' + encodeURIComponent(d.errMsg), 'no']
  94.                     });
  95.                 }
  96.                     //弹窗提示
  97.                 else {
  98.                     openDialog(d.errMsg);
  99.                 }
  100.                 return;
  101.             }
  102.             else {
  103.                 //可以正常下载
  104.                 download.goDownload('http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=' + softId);
  105.             }
  106.         }
  107.     });
  108. }
  109. download.lastTimeFlag = new Date();
  110. //下载点击的不能过于频繁
  111. download.check_LastClickTime = function () {

  112.     var now = new Date();

  113.     if (now - this.lastTimeFlag < 1500) {
  114.         return false;
  115.     }

  116.     this.lastTimeFlag = now;

  117.     return true;
  118. }
  119. //下载前验证
  120. download.check_BeforeDownload = function (url) {
  121.     if (!xiaoxue.chkLogin()) {
  122.         return false;
  123.     }
  124.     var d = Storage.Get("download", "timeFlag");
  125.     if (!d) {
  126.         Storage.Set("download", "timeFlag", new Date().getTime());
  127.         Storage.Set("download", "count", 1);
  128.         return true;
  129.     }
  130.     else {
  131.         var icount = parseInt(Storage.Get("download", "count"));
  132.         Storage.Set("download", "count", ++icount);
  133.         var interval = new Date().getTime() - Storage.Get("download", "timeFlag");
  134.         if (interval > 300000) {
  135.             //下载间隔超过5分钟,重置标记
  136.             Storage.Set("download", "timeFlag", new Date().getTime());
  137.             Storage.Set("download", "count", 1);
  138.             return true;
  139.         }
  140.         else if (icount >= 10000) {

  141.             //显示验证码
  142.             xiaoxue.popupVerifyCode(url);

  143.             return false;
  144.         }
  145.         else {
  146.             return true;
  147.         }
  148.     }
  149. }
  150. download.check_XiaoBenUser = function () {
  151.     var xiaobenUser = Util.cookie.get("xiaobenuser");
  152.     if (xiaobenUser) {//校本用户加积分
  153.         $.get("http://58.130.116.200/member/updatepoint.htm?username=" + xiaobenUser);
  154.     }
  155.     return true;
  156. }
  157. //跳转到下载前的检查
  158. download.goDownload = function (url) {

  159.     for (var i = 0; i < this.checks.length; i++) {
  160.         if (!this.checks[i]()) {
  161.             return;
  162.         }
  163.     }

  164.     location.href = url;
  165. }
  166. //配置下载验证逻辑
  167. download.checks =
  168.             [download.check_LastClickTime
  169.            , download.check_BeforeDownload
  170.            , download.check_XiaoBenUser];
  171. $(function () {
  172.     //下载弹窗事件
  173.     $(".downloadbtn").click(function () {
  174.         if (!xiaoxue.chkLogin()) {
  175.             return false;
  176.         }
  177.         downloadSoft();
  178.     });
  179.     //关闭弹窗
  180. });
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-23 11:52:40 From FishC Mobile | 显示全部楼层
小强工作室 发表于 2018-10-23 09:27
这个跳转链接 http://www.xuekeedu.com/Download.aspx?UrlID=41&SoftID=336504  在那里找的?能贴张图吗 ...

这个url就是我贴出来的js代码那里找出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 17:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表