javascript页面检测

反爬机制之 JS 渲染检测:如何应对需要执行 JS 才能访问的页面 本文深入解析了JS渲染检测反爬机制的技术原理与应对策略。文章首先剖析了JS检测的核心逻辑,包括浏览器环境验证、动态参数生成和异步内容加载等典型场景。针对不同复杂度需求,系统介绍了三种解决方案:静态分析JS逻辑适用于简单加密参数场景,无头浏览器方案(Playwright/Selenium)能处理复杂动态渲染,JS引擎嵌入(PyMiniRacer)则在性能与兼容性间取得平衡。通过实战案例详细演示了无限滚动处理、反检测规避和混淆代码执行等高级技巧,并提供了禁用非必要资源、复用浏览器实例等性能优化策略。文章强调应根 阅读详情
<script language="javascript">
function addCategory(){
    
if (document.listForm.leftCate.selectedIndex<0){
        alert(
"请选择要添加的行业!");
        
return false;
    }
    
var leftSelectIndex = document.listForm.leftCate.selectedIndex
    
var valuestr = document.listForm.leftCate.options[leftSelectIndex].value
    
var textstr = document.listForm.leftCate.options[leftSelectIndex].text
    
var rightLastIndex = document.listForm.rightCate.options.length
    
var newoption= new Option(textstr,valuestr);
    
    
if (rightLastIndex>=5){
        alert(
"最多选5个行业!")
        
return false;
    }
    eval(
"document.listForm.rightCate.options[rightLastIndex]=newoption")
    document.listForm.leftCate.options[leftSelectIndex]
=null;
    
}

function delCategory(){
    
if (document.listForm.rightCate.options.length<1){
        alert(
"您还没有添加行业,请添加!");
        
return false;
    }
    
else if (document.listForm.rightCate.selectedIndex<0){
        alert(
"请选择要删除的行业!");
        
return false;
    }
    
var rightSelectIndex = document.listForm.rightCate.selectedIndex
    
var valuestr = document.listForm.rightCate.options[rightSelectIndex].value
    
var textstr = document.listForm.rightCate.options[rightSelectIndex].text
    
var leftLastIndex = document.listForm.leftCate.options.length
    
var newoption= new Option(textstr,valuestr);

    eval(
"document.listForm.leftCate.options[leftLastIndex]=newoption")
    document.listForm.rightCate.options[rightSelectIndex]
=null;
}

function  subTotal()
 {
   destList 
= document.listForm.selectedItems;
  srcList 
= document.listForm.rightCate;

  
if(srcList.length==0)
  {
    alert(
"请选择行业!");
    
return false;
  }

  
for(var i = 0; i < srcList.length; i++) {
    
var valuestr = srcList.options[i].value
    
var textstr = srcList.options[i].text
    
var newoption= new Option(textstr,valuestr);
    eval(
"destList.options[i]=newoption")
    destList.options[i].selected
=true;
   }

   
return true;
 }
//判断有没有选中的信息类型

function checkList()
{
var checkObj=document.listForm.infoType;
if(checkObj == null)
{
  alert(
"请选择信息种类");
  
return false;
}

for(var i=0;i<checkObj.length;i++){
if(checkObj[i].checked){
return true;
}
}
if(checkObj.checked)
{
  
return true;
}

alert(
"请选择信息种类");
return false;
}


 
function formCheckSubmit()
 {

 
//先判断有没有选择信息
  if( !checkList())
  {
    
return false;
  }
  
    
var email = document.listForm.email.value;
    
var phoneCountry = document.listForm.phoneCountry.value;
    
var phoneArea = document.listForm.phoneArea.value;
    
var phoneNumber = document.listForm.phoneNumber.value
    
var companyName = document.listForm.companyName.value;
    
var address = document.listForm.address.value;

    

   
if( check(document.listForm))
   {
     
//把类别信息插入临时的列表
     if(! subTotal())
     {
       
return false;
     }


    
var enset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
var numset="0123456789, ";
    
var str = "0123456789-";
    
    
    
//判断几个必须为英文的东西,是不是都输入了英文!!!!!!!!
    
    
//!!!!!!!!!!!!!!!!keywords  lastname firstname
    
    
//isMadeOf
    var keywords = document.listForm.keywords.value;
    
var lastname = document.listForm.lastname.value;
    
var firstname= document.listForm.firstname.value;
      
if((jtrim(keywords).length >0))
      { 
        
if(isMadeOf(keywords,enset+numset))
        {
        
        }
else
        {
        alert(
"关键字必须为英文,且不能有空格!");
        
return false;
        }
      }
else{
        alert(
"请输入关键字!");
        
return false;
      }
      
        
if(jtrim(lastname)==""){
          alert(
"请输入姓");
          
return false;
        }
        
if(jtrim(firstname)==""){
          alert(
"请输入名");
          
return false;
        }
        
if(isMadeOf(lastname,enset))
        {
        
        }
else
        {
        alert(
"姓必须为英文!");
        
return false;
        }
      
         
if(isMadeOf(firstname,enset))
        {
        
        }
else
        {
        alert(
"名字必须为英文!");
        
return false;
        }
        
if(jtrim(email)==""){
          alert(
"请输入email");
          
return false;
        }
        
if(!isEmail(email)){
           alert(
"email格式不正确");
           
return false;
        }
        
if(jtrim(phoneCountry)==""){
           alert(
"请输入国家区号");
           
return false;
        }
        
if(!isInt(phoneCountry)){
           alert(
"国家区号必须是数字");
           
return false;
         }
        
if(jtrim(phoneArea)==""){
            alert(
"请输入城市区号")
            
return false;
        }
        
if(!isInt(phoneArea)){
            alert(
"城市区号必须是数字")
            
return false;
        }
        
if(jtrim(phoneNumber)==""){
           alert(
"请输入电话号码");
           
return false;
        }
        
if(!isMadeOf(phoneNumber,str)){
           alert(
"电话号码必须是数字");
           
return false;
        }
        
if(jtrim(companyName)==""){
           alert(
"请输入公司名称");
           
return false;
        }
        
if(lawlessStr(companyName)){
           alert(
"公司名称含非法字符");
           
return false;
        }
        
if(jtrim(address)==""){
           alert(
"请输入公司地址");
           
return false;
        }
        
if(lawlessStr(address)){
           alert(
"公司地址含非法字符");
           
return false;
        }
      document.listForm.submit();
      
return true;
   }
else
   {
     
return false;
   }
   
 }
 
 
function isEmail(theStr)
{   
    
var atIndex        =    theStr.indexOf("@")    ;
    
var dotIndex    =    theStr.indexOf(".",atIndex)    ;
    
var flag=true    ;
    
    theSub    
=    theStr.substring(0,dotIndex+1)    ;
    
if    ((atIndex    <    1)    ||    (atIndex    !=    theStr.lastIndexOf("@"))    ||    (dotIndex    <    (atIndex    +    2))    ||    (theStr.length    <=    theSub.length)) 
        {
            flag
=false    ;
        }
    
else
        {
            flag
=true    ;
        }
    
return (flag)    ;        
}

/**
  检查非法字符HTML代码过滤
  
*/
function lawlessStr(subStr){
    subStr
=subStr.toLowerCase();
    
var resultNum=-1;
    
var arrayObj = new Array();
    arrayObj[
0]="<br>";
    arrayObj[
1]="<p>";
    arrayObj[
2]="<input";
    arrayObj[
3]="<table";
    arrayObj[
4]="<tr";
    arrayObj[
5]="<td";
    arrayObj[
6]="<html";
    
for(var i=0;i<arrayObj.length;i++)
    {
        resultNum
=subStr.indexOf(arrayObj[i]);
        
if(resultNum!=-1)
        {
            
return true;
        }
    }
    
return false;
}
/**
  检查是否数字型字符串
*
*/
function isInt(str) {
    
if (str == "") {
        
return false;
    }
    
for(var i = 0; i < str.length; ++i) {
        
if((str.charAt(i)<'0') || (str.charAt(i)>'9')) {
                
return false;
        }
    }
    
return true;
}
/**
  检查是否是指定允许的字符串
*
*/
function isMadeOf(val,str)
{

    
var jj;
    
var chr;
    
for (jj=0;jj<val.length;++jj){
        chr
=val.charAt(jj);
        
if (str.indexOf(chr,0)==-1)
            
return false;            
    }
    
    
return true;
}
//去掉字符串的空格
function jtrim(str)
{ 
    
while (str.charAt(0)==" ")
    {
        str
=str.substr(1);
    }
    
while (str.charAt(str.length-1)==" ")
    {
        str
=str.substr(0,str.length-1);
    }
    
return(str);
}
</script>
 
Keil MDK安装NRF52832开发环境全攻略(附系统时间错误解决方案) 本文详细介绍了如何使用Keil MDK搭建NRF52832开发环境,包括基础软件安装、项目配置关键步骤以及常见问题解决方案。特别针对系统时间错误导致的编译失败问题提供了实用解决方法,帮助开发者快速上手NRF52832开发。 阅读详情

相关推荐

Solidworks转URDF避坑实录:从履带机器人到ROS仿真的完整配置流程

本文详细介绍了将Solidworks履带机器人模型转换为URDF格式并配置ROS仿真的完整流程,重点解析了坐标系设置、复杂关节定义、插件配置等关键步骤中的常见问题与解决方案,帮助开发者高效实现履带机器人在RVIZ和Gazebo中的精确仿真。

weixin_30693683的博客 457

用js实现检测不同设备信息跳转到对应设备的页面

<div id="main"> 主页面 </div> var redirect = ()=>{ // 获取设备信息 let userAgent = navigator.userAgent.toLowerCase() /* 设备信息: */ // 移动端:mozilla/5.0 (linux; android 6.0; nexus 5 build/mra58n) applewebkit/537.36 (khtml, like gecko) chrome/87.0.42

月来better 608

Springer期刊LaTeX模板中参考文献格式选择与编译错误的快速修复指南

本文针对Springer期刊LaTeX模板中参考文献编译后显示问号的常见问题,提供了快速修复指南。核心在于正确选择并配置与期刊匹配的参考文献格式文件(.bst),并执行标准的四步编译流程。文章详细解释了问题根源,并给出了从查找正确.bst文件到修改代码、执行编译的完整解决方案,帮助作者高效解决投稿中的技术障碍。

weixin_29266007的博客 402

js页面检测到目标站点存在javascript框架库漏洞

一、概述 在系统验收前安全检查时,绿盟检查到系统存在页面检测到目标站点存在javascript框架库漏洞,如下所示: 二、分析处理 这个漏洞是绿盟扫描比较常见的一个漏洞,原因就是jquery版本过低。升级到3.3以上就可以了。 建议升级jquery,但盲目升级会导致网站部分插件不可用;本项目采用spring架构,建议处理: 1)、根据web应用漏洞,找到详情页,里面有具体的路径信息。从路径中找到该文件; 2)、注释掉版本信息; 3)、用最高版本信息代替。 如果是vue项目,你再里面引用了js-cookie

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1万+

C++实战:基于ONNX Runtime与OpenCV部署XFeat图像匹配模型

本文详细介绍了在C++环境中,利用ONNX Runtime与OpenCV高效部署XFeat图像匹配模型的完整流程。内容涵盖环境搭建、模型转换、核心代码封装及可视化实现,旨在帮助开发者将这一先进的深度学习模型集成到对性能要求苛刻的工业或嵌入式应用中,实现鲁棒且快速的特征匹配。

gpu4optimizer的博客 522

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1358

网页开发:如何用JS检测用户是否通过后退按钮进入页面?

在网页开发中,准确判断用户是否通过浏览器后退按钮进入页面,对于提升用户体验和数据处理至关重要。这不仅关系到页面状态的恢复,还能避免重复提交等常见问题。理解并实现这一功能

2501_93902246的博客 448

osg3.6.5---osgEarth3.2 实现数字地球的加载

目前我在网上找得比较多的是osgearth2.10及以下的版本及加载数字地球的方法,但是我使用的是osg3.6.5和osgEarth3.。但是3.x版本和2.x版本差别很大,主要区别在于2.x有7个主要库,而3.x版本只有osgEarth这一个库。所以,特别记录一下。后面我讲他集成到qt的窗体在上传更新新的代码。1.直接上源码pro文件和cpp文件。

枫影竹韵的博客 1009

性能优化:javascript 如何检测并处理页面卡顿

在现代互联网时代,用户体验至关重要。一个流畅的网页可以让用户感到愉快,并增加他们在页面上的停留时间。然而,页面卡顿不仅会让用户感到沮丧,还可能导致他们离开你的网站。所以,如何检测并处理页面卡顿就显得尤为重要。今天,我们来聊聊如何使用JavaScript监测页面是否卡顿。页面卡顿通常指的是网页的响应速度慢,用户的操作不能及时得到反馈。造成卡顿的原因可能有很多,例如大量的计算任务、繁重的资源加载、内存泄漏等。在网页开发中,监测和处理页面卡顿是提升用户体验的重要环节之一。

乐闻世界 1416

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

基于Gossip算法的柔性互联自治微网群分布式协调控制策略:复现代码与详细解释

摘要(149字): 本文基于Gossip算法实现了柔性互联微网群(MMG)的分布式协调控制策略仿真。研究构建了包含3个微网、10个分布式电源(DG)的MATLAB/Simulink模型,采用双层控制架构:上层通过柔性交流开关(FAS)实现微网间功率协调,下层利用Gossip算法完成DG间的边际成本一致性控制。重点开发了异步通信的Gossip算法核心函数,实现了分布式电源的自主边际成本估计与功率分配。仿真验证了系统在负荷变化和DG故障等工况下的协调控制能力,结果表明该策略能有效维持微网群的经济运行与功率平衡。

huanghm88的专栏 281

JavaScript小项目之窗口状态检测、页面定时跳转

JavaScript小项目之窗口状态检测、页面定时跳转 项目题目: 1、窗口状态的检测(是否打开、关闭等); 2、页面定时跳转功能; 项目作用: 1、复习JavaScript课程理论知识,学习BOM基础知识,熟悉window.open()以及location对象实现窗口的状态检测; 2、复习JavaScript课程知识,学习BOM基础知识,熟悉定时器setTimeout()方法,实现页面在定时跳转; JavaScript小项目系列JavaScript小项目之窗口状态检测、页面定时跳转前言一、BOM是

高校教师 | AI兴趣者 专注Python|大数据|LLM学习 分享浅显易懂知识体系 1573

EtherCAT主站SOEM -- 18 --Qt-Soem通过CSV模式(周期同步速度模式)控制一个电机转圈圈

以上就是 EtherCAT主站SOEM – 18 --Qt-Soem通过CSV模式(周期同步速度模式)控制一个电机转圈圈 的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 1212

如何用 ifvisible.js 实现智能页面状态检测:从基础到高级应用

ifvisible.js 是一款轻量级跨浏览器工具,专为检测用户是否正在查看页面或与页面交互而设计。它基于 HTML5 可见性 API 构建,能够智能识别页面的活跃状态、闲置状态和隐藏状态,帮助开发者优化用户体验和资源利用。 ## 🌟 为什么选择 ifvisible.js? 在现代 Web 应用中,了解用户与页面的交互状态至关重要。无论是暂停视频播放、停止数据刷新,还是在用户返回时恢复操作,

gitblog_00582的博客 536

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

使用Javascript写一个方法检测页面是否为空间状态

请注意,这个函数可能不适用于所有情况,特别是如果你对“空白”状态的定义有所不同。例如,如果你认为一个只包含空白元素(如空白的。另外,如果你想检测的是页面加载状态(例如,是否所有资源都已成功加载),你可能需要使用不同的方法,如监听。这个函数首先检查页面上是否有任何元素。如果没有元素,或者只有基本的。)的页面也是“空白”的,那么你可能需要修改这个函数以包含这些检查。标签(这通常表示一个完全没有内容的HTML框架),则函数返回。标签内的文本内容是否为空。如果为空,则同样返回。事件或检查特定资源的加载状态。

王铁柱666的博客 396

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Javascript 检测 页面是否在iframe中

            //检测是否在iframe中            if(self.frameElement != null &amp;&amp; (self.frameElement.tagName == "IFRAME" || self.frameElement.tagName == "iframe")){                parent.parent.location =...

weixin_33806300的博客 158

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

js 检测文件是否被页面加载(css或js等)

代码: function isInclude(name){ var js= /js$/i.test(name); var es=document.getElementsByTagName(js?'script':'link'); for(var i=0;i<es.length;i++) if(es[i][js?'src':'href'].indexOf(name)!=-1)ret

PrimaryColor 827

探索用户行为:ifvisible.js —— 轻量级的页面交互检测库

在Web开发中,了解用户与页面的互动状态是至关重要的。如果你希望在用户离开、返回或停止活动时做出相应的响应,那么[ifvisible.js](http://serkanyersen.github.com/ifvisible.js/)是一个值得你关注的开源项目。这个小巧且跨浏览器的JavaScript库让你能够轻松地检查用户是否正在查看或与你的网页进行互动。 ## 项目介绍 ifvisible.

gitblog_00012的博客 596

js、Jquery代码检测页面

js、Jquery代码检测页面 body{ font-size:12px; text-align:center; } /* window.onload=function(){ if(document.getElementById("dd")){ var od = document.getElementById("dd"); od.innerH

yecats的博客 563

JS页面块与块碰撞检测源码

JS页面边缘、块与块div :碰撞检测 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style>

hr226的博客 523

js检测web页面长时间不操作跳转到指定页面,如果操作重新计时

js检测web页面长时间不操作跳转到指定页面,如果操作重新计时@TOC JS 代码 <script type="text/javascript"> var mouse1;//记录鼠标坐标 var mouse2; var eventID; function mousePos(e){ var x,y; var e = e||window.event; ret...

WAN_blank的博客 2200

JS检测页面是否被隐藏

【代码】JS检测页面是否被隐藏。

我的博客,一个程序员的博客 526

javascript检测页面是否缩放

简单写了下,只测试了chrome,道理很简单,其他浏览器自行扩充。 /* * zoomCheck */ jQuery(function($){ var dCheck = $("#zoomCheck"); if(dCheck.size() != 0){ return; } dCheck = $("<span></span...

weixin_30466953的博客 304

Ajax 动态载入html页面后不能执行其中的js快速解决方法

有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。 综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下: // 第一步:匹配加载的页面中是否含有js var regDetectJs = /&lt;script(.|...

徊忆羽菲 1569

html js判断设备,一个更容易检测设备的JavaScript库——device.js

decice.js的github地址device.js是一个可以用来检测设备的平台、操作系统和方向的JavaScript库。device.js 通过操作系统(比如 iOS,安卓,黑莓,Windows,Firefox OX),方向(横屏或者竖屏),类型(平板或者移动设备),来为设备添加 CSS Class,并且它还提供了一些Javascript 函数用来判断设备。比如在PC端打开引入了device....

weixin_39755952的博客 1095
上一篇: 在ASP.Net中两种利用CSS实现多界面的方法.
下一篇: 关闭
pc1024
博客等级 码龄20年 33粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值