首页 > 编程语言 >爬虫 202107【JavaPub版】

爬虫 202107【JavaPub版】

时间:2023-05-08 11:04:06浏览次数:35  
标签:__ webdriver return JavaPub 爬虫 window 202107 document true

写于20210711 17:10 北京朝阳区

@[toc]

方法:

首先下载 mitproxy,pip安装方法:

> pip install mitmproxy

基本使用方法:

  1. 给本机设置代理ip 127.0.0.1端口8001(为了让所有流量走mitmproxy)具体方法请百度。
  2. 启动mitmproxy。

windows:

> mitmdump -p 8001

Linux:

> mitmproxy -p 8001


2.修改chromedriver源码;

3.使用mitmproxy或fiddler做代码注入;

4.使用其他方法拦截发送回浏览器指纹的XHR

runBotDetection = function () {
    var documentDetectionKeys = [
        "__webdriver_evaluate",
        "__selenium_evaluate",
        "__webdriver_script_function",
        "__webdriver_script_func",
        "__webdriver_script_fn",
        "__fxdriver_evaluate",
        "__driver_unwrapped",
        "__webdriver_unwrapped",
        "__driver_evaluate",
        "__selenium_unwrapped",
        "__fxdriver_unwrapped",
    ];

    var windowDetectionKeys = [
        "_phantom",
        "__nightmare",
        "_selenium",
        "callPhantom",
        "callSelenium",
        "_Selenium_IDE_Recorder",
    ];

    for (const windowDetectionKey in windowDetectionKeys) {
        const windowDetectionKeyValue = windowDetectionKeys[windowDetectionKey];
        if (window[windowDetectionKeyValue]) {
            return true;
        }
    };
    for (const documentDetectionKey in documentDetectionKeys) {
        const documentDetectionKeyValue = documentDetectionKeys[documentDetectionKey];
        if (window['document'][documentDetectionKeyValue]) {
            return true;
        }
    };

    for (const documentKey in window['document']) {
        if (documentKey.match(/\$[a-z]dc_/) && window['document'][documentKey]['cache_']) {
            return true;
        }
    }

    if (window['external'] && window['external'].toString() && (window['external'].toString()['indexOf']('Sequentum') != -1)) return true;

    if (window['document']['documentElement']['getAttribute']('selenium')) return true;
    if (window['document']['documentElement']['getAttribute']('webdriver')) return true;
    if (window['document']['documentElement']['getAttribute']('driver')) return true;

    return false;
};

供参考:

  1. https://www.zhihu.com/question/50738719/answer/545145218
  2. https://www.icode9.com/content-4-131489.html
  3. 参考修改指纹:https://mp.weixin.qq.com/s?__biz=Mzg5OTU3NjczMQ==&mid=2247510375&idx=2&sn=5233386f674e9dc8b68c5760d8c6bc42&source=41#wechat_redirect
  4. 工具网站:https://bot.sannysoft.com/

探讨and了解:look

更多数据采集思路,欢迎公众号【JavaPub】

爬虫 202107【JavaPub版】_mitmproxy

标签:__,webdriver,return,JavaPub,爬虫,window,202107,document,true
From: https://blog.51cto.com/wangshiyu/6253150

相关文章

  • 【JavaPub版】MarkDown 写简历-建议收藏-早晚用得上
    MarkDown原文档和加照片又到了金三银四的季节,MarkDown写简历真不错,附MarkDown文本##联系方式----手机:-Email:-微信:##个人信息----姓名:-学历:-出生日期:19**.08-期望职位:Java研发工程师/大数据工程师-期望城市:-工作状态:##教育背景---##社会工作......
  • Python爬虫设置代理
    在Python中使用代理进行爬虫操作可以有效地隐藏用户的真实IP地址,防止被封禁或者限制访问。下面是设置代理的示例代码:importrequestsproxies={"http":"http://127.0.0.1:8888","https":"http://127.0.0.1:8888",}response=requests.get('ExampleDomain�......
  • scrapy爬虫标准流程
    Scrapy爬虫的标准流程一般包括以下几个步骤:1、明确需求和目标网站的结构,确定需要爬取的数据以及爬取规则。2、创建一个Scrapy项目,使用命令行工具创建一个新的Scrapy项目。3、定义数据模型和item,即确定要爬取的数据结构。4、编写爬虫类,使用Scrapy的Spider类编写爬虫程序,根据需......
  • 安装爬虫框架记录(第三方库)
    安装指令:python-mpipinstall.whl文件 安装Scrapy3-1.0.1,需要的依赖库如下:zope.interface>=4.4.2constantly>=15.1incremental>=21.3.0Automat>=0.8.0six-1.16.0hyperlink>=17.1.1PyHamcrest!=1.10.0,>=1.9.0Twisted>=13.1.0(最后) 安装pyOpenSSL-23.1.1......
  • 爬虫JS逆向其实挺简单
    JS逆向爬虫是指通过分析网站的JavaScript代码,模拟浏览器行为,从而获取网站数据的一种方式。下面是一个JS逆向爬虫的案例:1、分析目标网站的JavaScript代码,找到数据请求的URL和参数。2、使用Python的Requests库发送模拟的HTTP请求,携带必要的参数。3、解析返回的数据,提取需要的信息......
  • Python多线程爬虫简单模板
    多线程爬虫的流程可以大致分为:(1)获取种子URL:从初始URL中抓取起始页面,解析其中的URL,并将这些URL添加到未访问的URL队列中;(2)解析下载的网页:从URL队列中取出一个URL,下载其内容,解析其中的链接,并把新的链接放入未访问的URL队列中;(3)存储爬取的数据:从URL队列中取出未访问的URL,把其中的内......
  • 认识网页结构和爬虫
    网页一般由三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)和JScript(活动脚本语言)HTMLHTML是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于HTML的标签,并且标签都是成对出现的。常见的标签如下:<html>..</html>表示标记中间的元素是网页<body......
  • python异步爬虫
    异步爬虫基础知识阻塞​ 阻塞状态指程序未得到所需计算资源时被挂起的状态。程序在等待某个操作完成期间,自身无法继续干别的事情,则该程序在操作上是阻塞的。​ 常见的阻塞形式有:网络I/O阻塞、磁盘I/O阻塞、用户输入阻塞等。阻塞是无处不在的,包括在CPU切换上下文时,所有进程都......
  • 爬虫使用http代理
    1、每个过程从接口中随机取出IP列表,重复使用。失败后,调用API获取。一般逻辑如下:(1)每个过程,从接口中随机取回部分ip,反复尝试ip目录以获取数据;(2)如果访问成功,继续抓住下一个。(3)如果失败,从界面取一批IP,继续尝试。方案缺点:每个IP都有截止日期。如果提取100个,使用第20个,剩下的大部分可能......
  • 利用Python爬虫采集1688商品详情数据 +商品列表数据+商品API接口(支持全网)
    一、如何通过手动方式查看1688商品详情页面的数据1.1688商品详情API接口(item_get-获得1688商品详情接口),1688API接口代码对接可以获取到宝贝ID,宝贝标题,价格,掌柜名称,库存,最小购买数,宝贝链接,宝贝图片,品牌名称,商品详情,详情图片等页面上有的数据均可以获取到,手动方式如下:例......