背景

下载PDF报告总是强迫用户填写邮箱、姓名等私人信息,如:
image.png

一般有以下情况(3,按遇到的概率排序)

更多:点击后下载

F12+搜“.pdf”,一般会出现PDF资源链接。

有时:点击事件的脚本中有下载链接

例子:绿盟 - APT34事件分析报告

脚本

定位脚本

花费时间较多,建议优先选择定位词的方式。
image.png

代码

  1. <script>
  2. //更换验证码图片
  3. function pop4_code_img(){
  4. var img_src = '/api.php?op=checkcode&m=admin&c=index&a=checkcode&time='+Math.random();
  5. $('#pop4_code_img').attr('src',img_src);
  6. }
  7. $('#pop4_code_img').click(function(){
  8. pop4_code_img();
  9. });
  10. //打开客服弹窗3:提交项目需求
  11. function pop4(){
  12. $("#pop4").fadeIn();
  13. $('#pop4_xingming').focus();
  14. pop4_code_img();
  15. }
  16. //提交表单1
  17. function pop4_form_submit(){
  18. var xingming = $('#pop4_xingming');
  19. var shouji = $('#pop4_shouji');
  20. var youxiang = $('#pop4_youxiang');
  21. var hangye = $('#pop4_hangye');
  22. var gongsi = $('#pop4_gongsi');
  23. var pop4_code = $('#pop4_code');
  24. if(xingming.val()==''){
  25. alert('请输入您的:姓名');
  26. xingming.focus();
  27. return false;
  28. }
  29. if(!check_length(xingming.val(),6)){
  30. alert('您的姓名请限制在6字以内');
  31. xingming.focus();
  32. return false;
  33. }
  34. if(shouji.val()==''){
  35. alert('请输入您的:联系电话');
  36. shouji.focus();
  37. return false;
  38. }
  39. if(!check_mobile(shouji.val())){
  40. alert('手机格式不正确');
  41. shouji.focus();
  42. return false;
  43. }
  44. if(youxiang.val()==''){
  45. alert('请输入您的:邮箱');
  46. youxiang.focus();
  47. return false;
  48. }
  49. if(!check_email(youxiang.val())){
  50. alert('邮箱格式不正确');
  51. youxiang.focus();
  52. return false;
  53. }
  54. if(!check_length(youxiang.val(),100)){
  55. alert('您的姓名请限制在100字以内');
  56. youxiang.focus();
  57. return false;
  58. }
  59. if(hangye.val()==''){
  60. alert('请输入您的:所在行业');
  61. hangye.focus();
  62. return false;
  63. }
  64. if(!check_length(hangye.val(),100)){
  65. alert('您的所在行业请限制在100字以内');
  66. hangye.focus();
  67. return false;
  68. }
  69. if(gongsi.val()==''){
  70. alert('请输入您的:所在公司');
  71. gongsi.focus();
  72. return false;
  73. }
  74. if(!check_length(hangye.val(),100)){
  75. alert('您的所在公司请限制在100字以内');
  76. hangye.focus();
  77. return false;
  78. }
  79. if(!check_code(pop4_code.val())){
  80. alert('验证码格式不正确');
  81. pop4_code.focus();
  82. return false;
  83. }
  84. //提交表单 wroo
  85. var url = '/index.php?m=formguide&c=index&a=check_down_form&formid=74&siteid=1';
  86. var download_url = '/index.php?m=content&c=index&a=show&catid=136&id=57&template=download';
  87. $.ajax({
  88. url:url,
  89. type:"post", //数据类型,get,post,script可选,默认get
  90. data: {
  91. xingming:xingming.val(),
  92. shouji:shouji.val(),
  93. youxiang:youxiang.val(),
  94. hangye:hangye.val(),
  95. gongsi:gongsi.val(),
  96. code:pop4_code.val(),
  97. },
  98. async:false,
  99. success:function(result){
  100. if(result=='success'){
  101. $(".fix_black").fadeOut(); //半闭弹窗
  102. $("#download_link").attr('href',download_url); //半闭弹窗
  103. window.location = download_url; //下载文件
  104. }
  105. if(result=='code_error'){
  106. alert('验证码错误');
  107. }
  108. }});
  109. //$('#pop1_form').submit();
  110. }
  111. </script>

定位词(优先级从上到下)

  • POST:因为业务流程有提交表单
    • 在POST后成功的逻辑里找:

image.png

  • window.location”/“window.location.href”:一般网页下载是用这个函数
  • “download”/“down”:实在没有的话,就只能搜有关下载的字符串,然后慢慢读代码上下文

    较少:点击后跳转至新页面

    例子:CrowdStrike 2023 Global Threat Report
    检查按钮元素:
    image.png
    通过type和class都能定位到脚本处,但一般建议用class:
    image.png
    image.png