【网站技术解读⑥】-- 验证码弹窗

www.python88.cn网站技术解读,本网站核心技术在验证码弹窗和资源查询,验证码弹窗可以按照上次讲的,前端布局动效方面复制粘贴我的前端代码即可,网站很多地方会弹出弹窗验证码

1、爬虫、数据挖掘、机器学习、深度学习、金融量化、MySQL、微信公众号教程这些点击会出现验证码

2、开始查询按钮点击次数超过3次会出现验证码

3、查询结果返回的网盘链接点击超过2次会出现验证码

4、点击每个教程下面的领取视频按钮会出现验证码


如果你的网站没有出现验证码弹窗,说明你的ip地址已经验证成功,在后端记录过了,这上面的很多技术,都涉及非常多的前端技术点,为了便于消化吸收,尽量说细致些,该系列教程学习在于学习一些思路,掌握大致思路逻辑,能大致知道我用到哪些知识即可,也不必抠很多细节逻辑,有时候我这边逻辑多了,自己也有点懵逼


1、页面加载向后端发送一个POST请求


是否弹出各类弹窗,主要根据后端返回的book_click_sign来判断(error/right)

// 教程
var img_num = 1;
$.post("/book_ip_sign/",{},function(data){
 var book_click_sign = data.book_click_sign;
 var find_ip_num = data.find_ip_num;
 var user_ip = data.user_ip;
 var img_num = data.img_num;
 console.log(user_ip);
 console.log(find_ip_num);
 console.log(book_click_sign);
 sessionStorage.setItem('book_click_sign', book_click_sign);
 sessionStorage.setItem('img_num', img_num);
});


2、后端代码我记录IP如何记录的

user_ip:获取用户ip

find_ip_num: 记录用户ip的表

ip_df : 利用pandas读取数据库,也可以用orm读取

current_num:用户点击开始查询的次数,如果小于3次则不出现弹窗二维码,超过3次则出现弹窗二维码

if user_ip not in ip_list: 如果ip没有在表里面,则保存一下,并返回context,如果ip在表里保存,则在根据current_num是否大于3判断book_click_sign返回error还是right

book_click_sign: book_click_sign为一个判断是否出现各类弹窗的标志error/right

def book_ip_sign(request):
  user_ip = request.META['REMOTE_ADDR']
  print("***********")
  print(user_ip)
  engine = get_local_engine()
  ip_df = pd.read_sql("find_ip_num", engine)
  ip_list = list(ip_df["ip"])
  if user_ip not in ip_list:
    print("新的用户IP")
   num = 0
    find_ip_num = FindIpNum()
    find_ip_num.num = num
    find_ip_num.ip = user_ip
    find_ip_num.time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    find_ip_num.save()
    context = {"user_ip": user_ip, "book_click_sign""error","img_num": random.choice([1]),"find_ip_num":num}
    return JsonResponse(context, content_type="application/json", charset="utf-8")
  else:
    current_user = FindIpNum.objects.filter(ip=user_ip)
    current_num = current_user[0].num
    if current_num < 3:
      context = {"user_ip": user_ip, "book_click_sign""error""img_num": random.choice([1]),"find_ip_num":current_num}
      return JsonResponse(context, content_type="application/json", charset="utf-8")
    elif current_num >= 3:
      context = {"user_ip": user_ip, "book_click_sign""right""img_num": random.choice([1]),"find_ip_num":current_num}
      return JsonResponse(context, content_type="application/json", charset="utf-8")


3、爬虫、数据挖掘、机器学习、深度学习、金融量化、微信公众号教程这些点击会出现验证码


上面详细说了后端返回book_click_sign的详细思路,那么前端拿到这个信号后如何使用,则是本站的核心业务逻辑,弹出验证码的这个过程,html、css、js都在index.html中

640?wx_fmt=jpeg


对于后端返回的book_click_sign,我保存到了浏览器的sessionStorage中了,

sessionStorage.setItem('book_click_sign', book_click_sign);


取得时候则是通过sessionStorage.getItem来取


limit_index_list : 所有对应各个教程的索引,从0开始

索引号:1、爬虫   5、数据挖掘   6、机器学习7、深度学习    8、金融量化  11、MySQL    14、微信公众号开发

$(".book ul li").click:所有教程都绑定click事件

var index = $(this).index():获取当前点击的教程的index索引

limit_index_list.indexOf(index)==1:判断当前点击的位置是不是1(爬虫),不过这种判断有点啰嗦,你可以直接用index来判断是否是1(爬虫)

window.open:如果是爬虫,并且book_click_sign是right,则打开爬虫网页,如果不是则将弹窗fadeIn()显示出来

后面5、6、7、8、11、14跟1类似,代码重复,只需要替换网址即可


$(".book ul li").click(function(){
 var index = $(this).index();
 var limit_index_list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22];
 if(limit_index_list.indexOf(index)==1){
   book_click_sign = sessionStorage.getItem("book_click_sign");
   console.log(book_click_sign);
   if(book_click_sign=="right"){
     window.open("http://www.python88.cn/book/spider/","_blank")
   }else{
     img_url = "/static/img/modal_img_" + 1 +".jpg";
     $(".bookDiv .qr_code").attr("src",img_url);
     $('.grayDiv,.bookDiv').stop().fadeIn();
   }
}}



python爬虫人工智能大数据公众号

640?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值