-
2021-10-12 14:23:07
前言
现在有很多网站不登陆或者不是会员不能复制内容,现在教大家几种方法来突破这个限制。
通过快捷键ctrl+p
ctrl+p是打印的快捷键,一般的限制都可以通过这个方式来复制
document.designMode
- F12/右键->检查,打开浏览控制台
- 切换到console面板
- 输入
document.designMode = 'on'
document.body.contentEditable
- F12/右键->检查,打开浏览控制台
- 切换到console面板
- 输入
document.body.contentEditable = 'true'
结束语
本章,主要介绍了三种方式来解决网页不能复制的问题。如果觉得有所帮助就一键三连吧!
更多相关内容 -
直接使用网页右键中的打印,在A4纸上打印的解决方案
2013-11-12 17:23:18直接使用网页右键中的打印 在A4纸上打印的解决方案 -
网页打印控件JS版
2018-09-05 10:11:00JsPrint网页打印控件,引用一个JS直接调用方法,就可打印指定的DIV内容。 -
打印预览空白,网页打印空白原因及解决办法汇总
2021-06-27 09:35:53打印预览空白,网页打印空白原因及解决办法汇总故障表现:1.网页没有加密过,word什么的打印预览正常。进行网页打印,预览时是空白的,只出现页码和在最下面本该显示该网站域名的地方出现file://C:\WINDOWS\TEMP\d7Y7...打印预览空白,网页打印空白原因及解决办法汇总
故障表现:
1.网页没有加密过,word什么的打印预览正常。进行网页打印,预览时是空白的,只出现页码和在最下面本该显示该网站域名的地方出现file://C:\WINDOWS\TEMP\d7Y7QZJF(此处根据网站不同而不同).htm。在浏览网页时点击打印预览,显示出来的是一张白纸。
2.有的网页可以正常预览,有的网页预览,打印都是空白,页脚显示
file:// /C: /Users/用户名/AppData/Local/Temp/d7Y7QZJF(此处根据网站不同而不同).htm
故障原因:
1.在windows操作系统上使用IE作为浏览器时,常常会发生这样的问题:在浏览使用UTF-8
编码的网页时,浏览器无法自动侦测(即没有设定"自动选择"编码格式时)该页面所用的编码,即使网页已经声明过编码格式。UTF-8为3个字节表示一个汉字,而普通的GB2312或BIG5是两个。由此造成某些含有中文UTF-8编码的页面产生空白输出。
2.保护模式下%Temp%\Low 文件夹工作不正常引起的
解决办法:
方法一.(首选解决办法):下载360浏览器,直接打印。
1.打开360浏览器,点击“文件”—“打印”
2.点击“打印”
-
直接打印PDF文件,不弹出打印设置窗口
2017-01-09 14:19:00直接打印PDF文件,不弹出打印设置窗口 -
简单一步解决网页内容无法复制
2021-06-30 10:18:54某些网站无法复制器内容,比如: 以下解决方案仅适用于Chrome. 解决方案一 Crtl+Shift+C,鼠标点击需要复制的文字,在Elenments中找到源代码,直接右键复制。 解决方案二 禁用网页js,复制时出现的弹窗是因为js...某些网站无法复制器内容。
以下解决方案仅适用于Chrome.解决方案一
Crtl+Shift+C
,鼠标点击需要复制的文字,在Elenments中找到源代码,直接右键复制。
解决方案二
禁用网页js,复制时出现的弹窗是因为js检测到了复制操作,简单有效的办法就是禁止js。
Tips:
在浏览器中可以随意编辑网页,使用F12进入开发者模式后,点击Console,输入
document.body.contentEditable = 'true';
回车运行,就可以对网页进行编辑。
一个更快速的方法是将下列代码添加为书签:
javascript:document.body.contentEditable = 'true'; document.designMode='on'; void 0
之后在任意网站上点击这个书签就进入编辑模式!注意!只能本地编辑!刷新后失效!
-
解决网页pdf禁止打印的方案
2021-12-12 13:37:17网页禁止打印pdf解决办法网页中canvas预览的pdf打印方案
日常生活中总是需要使用搜索引擎检索一些pdf文档,很多网站通常使用的是pdf文档预览,并且有禁止打印的限制,如果选择手动单张复制图片或者截长图难免费时又费力,本文主要是通过编写油猴脚本代码实现打印网页生成pdf。
文章中pdf打印思路用于前端学习之用。
1.包含源地址的网页
第一类pdf 预览的网站是在前端html中直接包含了pdf文件的源地址。
最常见的方式在通过页面内嵌入iframe、embed、object标签,标签里会直接包含pdf的源地址。
<iframe src="http://www.xxx.com/test.pdf" width=900 height=900>
针对这种网站,只要使用
f12
审查元素,直接利用pdf的源地址进行下载即可获取原pdf文件。有些网站会使用类似于
jquery.media.js
的jquery插件实现pdf的预览,但是这种方式还是会将pdf的源地址写在前端网页内。<script type="text/javascript"> $('#handout_wrap_inner').media({ width: '100%', height: '100%', autoplay: true, src:'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf', }); </script>
对于这种方式可以在
F12
审查元素通过搜索关键词.pdf
关键词来判断2.网页中不包含pdf源地址
第一种预览pdf的方式通常是针对开放的PDF文档,对于一些有着限制下载的文档预览网站不会直接将PDF的源地址放进前端代码里,一般会选择通过一张张的图片形式甚至一个个canvas的绘制来显示整个pdf文档,很多允许预览pdf的文库通常会使用这种方式展示文档。
<img src="http://www.xxx.com/resource/test.jpg">
或者使用style中的background-image中的url属性来放置图片地址。
<div class="xxx" id="xxx" style="background-image:url("https://www.xxx.com/resource/test.jpg")"></div>
或者使用canvas绘制一页页的pdf文档如下图所示:
对于这种形式预览pdf,你可以选择一页页手工截图整理成文档,但是最便捷的方式肯定是使用
ctrl+p
对网页进行打印,如果可以去除一些没有边栏和其他没有必要的部分打印成pdf将会是最完美的选择,但是现实很残酷,网页会温馨的提示你,该页面禁止打印,或者只能打印出空白的页面,那是因为网站对打印做出了限制。1.油猴脚本
油猴脚本(Tampermonkey)是一个非常流行的浏览器扩展,它可以运行由广大社区编写的扩展脚本,来实现各式各样的功能,比如常见的去广告、修改样式文件、甚至是下载视频。
实际上油猴脚本可以在网页加载后再次加载你个人的js脚本,js可以控制整个网页文档的dom元素。你可以控制这些元素的一切来达到你想要的功能。
油猴脚本可以在各大浏览器上进行安装,google浏览器和firebox浏览器可以直接在应用商店搜索下载,但是值得一提的是谷歌浏览器应用商店需要翻墙,火狐浏览器则不需要,谷歌浏览器也可以通过离线安装。不知道如何安装的同学可以百度搜索奥!!
2.解除禁止打印设置
禁止打印的表现形式可以多样化,可以截断你的打印快捷键
ctrl+p
,但是大多数的网页主要是通过使用@media属性来限制打印功能,全面禁止打印会比较麻烦,所以只要使用户打印出来的内容为空就可以达到限制打印的功能。<style> @media print{ body{display:none} } </style>
这边以百度文库为例,通过
F12
调出调试工具,然后再控制台输入代码window.print()
后回车也可以对网页进行打印,但是会发现整个文档的内容为空。这是因为网页中使用了@media限制了用户的打印内容输出,此时可以加一部分代码内容,进行再次打印
var style = document.createElement('style'); style.innerHTML = "@media print {body{display:block} @page {margin:0; size:500px 500px;}"; window.document.head.appendChild(style); window.print();
这里代码内容其实就是嵌入一个@media打印样式,可以将之前禁止打印的样式给覆盖掉,此时可以进行打印,但是会有很多干扰内容,并且最重要的pdf内容不见了,那是因为网页之前的@media内容比较多,我们只是简单地对打印时body的样式进行了修改,但是没有对其他元素进行操作。
3.编写脚本
有了刚刚的操作步骤后,我们可以简单的模拟一个写脚本打印pdf的思路,首先这个打印时对整个网页进行打印,而我们需要的内容只是每一页的pdf信息,所以我们大胆拟定思路,先获取网页中所有pdf的图片,只需要记录图片的真实地址即可。在获得所有pdf页之后,我们直接清空body标签下的所有内容,然后重新将我们的pdf一页页放上去,然后打印这个页面,就可以获取整个pdf内容。
在文库页面打开油猴插件,点击新增脚本,在里面编辑我们的个人脚本代码。这边可以导入jquery库方便使用jquery进行操作dom元素。
// @require http://code.jquery.com/jquery-1.11.0.min.js
我们首先使用jquery按级获取到元素的background-image属性,然后使用字符替换提取url(“image_url”)中的图片地址,我们简单的使用数组来存储所有图片的地址,为了规范以后打印的纸张,我们在获取图片地址的同时,记录下图片的长宽数据。
let imgs = [] let img_width = 0; let img_height = 0; $('#reader-container div .reader-pic-layer .ie-fix').each(function(){ let cur_element = $(this).children('.reader-pic-item:last'); let img_url = $(cur_element).css('backgroundImage'); img_width = parseInt($(cur_element).css('width')); img_height = parseInt($(cur_element).css('height')); imgs.push(img_url.replace('url("', '').replace('")', '')); }) console.log(img_width, img_height); console.log(imgs);
输出查看数组中存放的图片地址,确认地址无误。
但是我们不能让脚本直接触发,我们先创建一个按钮,在点击按钮之后触发后续的操作。所以我们创建button元素,为他赋予点击事件。
let btn = $('<input id="my_download" type="btn" value="下载" style="text-align: center;color:white;position:fixed;left:20px;bottom:20px;cursor: pointer;width: 112px;height: 40px;line-height: 41px;line-height: 40px;background-color: #4e6ef2;border-radius: 10px 10px 10px 10px;font-size: 17px;box-shadow: none;font-weight: 400;border: 0;outline: 0;letter-spacing: normal;">'); $('body').append(btn); $(btn).on('click', function(){ let imgs = [] let img_width = 0; let img_height = 0; $('#reader-container div .reader-pic-layer .ie-fix').each(function(){ let cur_element = $(this).children('.reader-pic-item:last'); let img_url = $(cur_element).css('backgroundImage'); img_width = parseInt($(cur_element).css('width')); img_height = parseInt($(cur_element).css('height')); imgs.push(img_url.replace('url("', '').replace('")', '')); }) console.log(img_width, img_height); console.log(imgs); })
这样我们在点击继续阅读之后,点击我们创建的下载按钮之后,输出所有的pdf图片页面,此时输出了所有的pdf页面。
现在我们只需要将页面清空,然后只单纯地放上pdf页面,然后进行触发打印浏览器页面即可。代码中我们每次都要创建一个img元素,将它的src属性设置为数组中存储的图片地址。同时要为body设置纵轴方向居中的flex布局,这样子每页pdf页面与正常看见的pdf一致。代码如下
$('body').empty(); $('body').css('display', 'flex'); $('body').css('flex-direction', 'column'); for(let i = 0; i < imgs.length; i++){ let img = $('<img>') $(img).attr('src', imgs[i]); $('body').append(img); }
此时页面只有我们的pdf页面,最后我们执行打印操作,此时我们需要设置@media中的page纸张大小,用上之前存储图片的长宽数据设置纸张大小,代码如下:
var style = document.createElement('style'); style.innerHTML = "@media print {body{display:block} @page {margin:0; size:" + img_width +"px " + img_height + "px;}"; window.document.head.appendChild(style); window.print();
代码是为了写这篇文章临时起意写的,主要是为了体现实验思路,对很多不同的页面都不具有通用性,很多地方欠缺考虑性,最后实现效果如下:
温馨提示(打印需要整个页面加载完毕才能触发),最后在这里贴上整段代码,@match是要满足这个匹配的网址,这个油猴脚本才能生效。
// ==UserScript== // @name print_pdf // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://wenku.baidu.com/view/6cc589a2872458fb770bf78a6529647d272834ac?fr=unit_43520_plan_3938_slotid_47 // @icon https://www.google.com/s2/favicons?domain=baidu.com // @require http://code.jquery.com/jquery-1.11.0.min.js // @grant none // ==/UserScript== (function() { 'use strict'; let btn = $('<input id="my_download" type="btn" value="下载" style="text-align: center;color:white;position:fixed;left:20px;bottom:20px;cursor: pointer;width: 112px;height: 40px;line-height: 41px;line-height: 40px;background-color: #4e6ef2;border-radius: 10px 10px 10px 10px;font-size: 17px;box-shadow: none;font-weight: 400;border: 0;outline: 0;letter-spacing: normal;">'); $('body').append(btn); $(btn).on('click', function(){ let imgs = [] let img_width = 0; let img_height = 0; $('#reader-container div .reader-pic-layer .ie-fix').each(function(){ let cur_element = $(this).children('.reader-pic-item:last'); let img_url = $(cur_element).css('backgroundImage'); img_width = parseInt($(cur_element).css('width')); img_height = parseInt($(cur_element).css('height')); imgs.push(img_url.replace('url("', '').replace('")', '')); }) console.log(img_width, img_height); console.log(imgs); $('body').empty(); $('body').css('display', 'flex'); $('body').css('flex-direction', 'column'); for(let i = 0; i < imgs.length; i++){ let img = $('<img>') $(img).attr('src', imgs[i]); $('body').append(img); } // 进行打印 var style = document.createElement('style'); style.innerHTML = "@media print {body{display:block} @page {margin:0; size:" + img_width +"px " + img_height + "px;}"; window.document.head.appendChild(style); window.print(); }) })();
整个文章是为了提供禁止打印的一个思路,整个思路是从前端js这个方向出发,手段算不上高明,但是胜在简单容易,也可以考虑从抓包,构造请求出发,但是应该会遇上加密的数据。
有些网页可能并不会将所有的图片都放在网址中,也有可能是动态的增删元素来实现的预览,不同的网站做法都很大的不同,想要写出通用性强的好插件,需要你的代码有很强的适用性。
除了图片形式存储之外,还有使用vanvas元素绘制一页页的pdf,遇上这种形式就不能简单地存储源地址了,这边提供一个思路,可以复制整个canvas元素到数组中。
function save_canvas(oldCanvas){ let newCanvas = $('<canvas></canvas>')[0]; let newCanvasContext = newCanvas.getContext('2d'); //console.log(oldCanvas); newCanvas.width = oldCanvas.width; newCanvas.height = oldCanvas.height; newCanvasContext.drawImage(oldCanvas, 0, 0, oldCanvas.width, oldCanvas.height); return newCanvas; }
文章用于记录学习之用。
----东湖大白鹅
-
网页打印控件
2019-04-01 13:51:44网页打印控件,支持IE/chrome.直接简单打印网页内容,非常不错的打印控件。 -
网页上的在线打印如何下载成本地PDF格式(人工亲测)
2021-10-08 10:33:48第一步:下载谷歌浏览器Google Chrome – ...第三步:点击谷歌浏览器右上角的三个"."然后单击后找到print再次点击 第四步:点击此处选择save as pdf 第五步:点击下面的save即可得到你想要的pdf文件了 ... -
如何直接获取网页上的数据到工作表
2018-10-02 07:56:35(常见问题)如何提取网页上的表格数据怎么利用excel获取网上数据如何实时获取网页上的数据信息【资料来源于网络搜索:王西猛讲师的网络课堂】【解决方法,wangqiang博客推荐视频教程】 wangqiang博客推荐视频教程 ... -
js直接打印pdf文件内容
2020-12-21 04:01:47(1)需求:是网页上打开一个pdf文件,然后直接打开打印机,就是直接打印,不用用户再次点击打印按钮,这样用户体验好(2)经历:我在网上找了资料就是使用window.print(),但是这个只是打印标签的内容,对于pdf的url里面的内容... -
一招教你将网页内容转化为word文档保存
2021-06-10 11:20:50一招教你将网页内容转化为word文档保存相信很多小伙伴在日常办公中都会遇到要将网页内容转化为word文档保存的情况,那么具体该如何操作呢?方法很简单,下面小编就来为大家介绍。具体如下:1. 首先,在电脑上的... -
禁用网页的Javascript,突破限制直接复制文本内容
2020-04-23 13:25:07作为当代大学生,面对形式主义的课程,我们常常选择形式主义的手段来应付。 ...论文内容</p> 新建文本文档.txt 粘贴并保存 改txt为html并用浏览器打开 这样就可以优雅的抄论文了~ ... -
使用JS打印网页内容及图片
2018-02-11 17:51:291、利用jQuery打印插件jqprint:jquery.jqprint-0.3.js ;2、 window.print()的JS编写:<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&... -
使用js打印网页局部图片(内容)
2018-07-30 21:20:36//定义打印区域起始字符,根据这个截取网页局部内容 sprnstr= "<!--startprint-->" ; //打印区域开始的标记 eprnstr= "<!--endprint-->" ; //打印区域结束的标记 prnhtml=bdhtml.substr(bdhtml.indexOf... -
电脑可以上微信,但是网页打不开怎么解决
2021-01-11 23:10:39电脑开机后,想要浏览网页却发现打不开任何网页,怎么解决呢?下面由小编为你整理了的相关方法,希望对你有帮助!电脑开机后网页打不开解决方法在地址栏的后面有个“闪电”的图标,鼠标放在上面会显示当前模式2.点击... -
禁用Java小程序脚本解决网页内容复制不了的方法
2021-03-09 23:06:06在复制网页内容的时候,出现提示“无法复制”的问题,这样就会给我们收集网页内容带来麻烦,对于这样的问题,我们可以通过浏览器Internet区域禁用Java小程序脚本,以这样的方法来解决网页内容无法复制的问题,... -
安卓移动端直接打印文档方法,无需开电脑
2020-12-22 01:04:31而EPSON iprint程序支持PDF格式或者图片文档直接打印到打印机。所以,针对图片或者PDF格式,只需要在文件浏览器中选择用EPSONiprint打开,即可开始打印。也可以用分享/发送的方式,选择发送到EPSON ip... -
c-lodop打印网页内容
2017-03-11 13:36:19最近在做一个发票打印的功能,由于业务需要,所以要用html设计好打印样式,然后通过打印html页面的形式去打印内容。 首先。。。。。你得有一个设计好的样式页面,然后把数据注入到你的页面中。 好,然后打开页面查看... -
用JS 实现直接打印 而不弹出提示对话框【解决方案】
2020-08-11 10:49:14用JS 实现直接打印 而不弹出提示对话框【解决方案】 -
window.print()打印网页局部内容
2014-07-18 09:46:22用window.print()打印指定div里面的内容 ...window.print可以打印网页,但有时候我们只希望打印特定控件或内容,怎么办呢? 首先我们可以把要打印的内容放在div中,然后用下面的代码进行打印。 --> "javascript -
网页打印文档,不弹出浏览器打印对话框设计思路
2022-04-08 15:42:59客户提出一个功能,在浏览器上点击打印按钮,不弹出浏览器的打印对话框,让打印机直接打印所需内容。 二、过程 在接收到该需求后,就去查询相关资料,查询到一个解决方案,使用ie插件,由于我们前端项目使用的是... -
打印表格时内容显示不完整怎么办?四种方法解决WPS不完整问题
2021-06-14 08:00:48在打印表格时,偶尔出现表格内容显示不完整的状况,这是什么原因导致的呢?出现这样的情况应该如何处理?接下来为大家介绍几种处理方法,可以对应情况来解决。一、取消打印区域打印表格显示不完整,有可能是因为设置... -
如何解决网页无法复制文字问题
2022-01-11 20:56:45某些网页会存在复制文字收费的情况,如何进行复制呢? 方法1: 选中要复制的文字后,直接往word文档中拖拉即可。 方法2: 先按F12,打开开发工具 然后点击右上角设置,找到调试程序,选中禁用JavaScript,... -
谷歌浏览器直接启动打印不预览解决方案
2019-11-05 14:20:44这个解决方案网上写的很多但是都没写全! 1. 创建一个谷歌浏览器的快捷方式 2. 右键快捷方式,点击【属性】,点击【起始位置】,在【目标】尾部位置 添加 “ --kiosk-printing” 注意空格!!! 重点来了 ! 设置好... -
解决网页内容自制不了,文档复制需要VIP权益方法
2021-02-24 14:26:49在360浏览器下,有人说按F12,然后在Console下输入$=0命令回车即可,我试过不行。 要先按F12、再按F1、然后找到DEBUGGER下的Disable JavaScript前打勾即可以复制文字内容。 -
python 获取网页的内容
2018-11-07 15:07:16一下为获取网页上特定的内容的程序 没有注释 import requests from bs4 import BeautifulSoup import bs4 import os from time import sleep url_list = [] headers = {'User-Agent':'Mozilla/5.0 ... -
window.print()打印网页中指定内容的实现方法
2018-02-02 16:37:42是直接打印了整个页面,但只打印其中的一部分时就需要一些方法了 1、在页面的代码头部处加入JavaScript: function doPrint() { bdhtml=window.document.body.innerHTML; sprnstr=""; //开始打印标识字符串有... -
Vue中打印网页的指定部分的几种方法
2019-10-28 16:15:55本例为打印网页上的一个表格 window.print()打印的是整个网页的HTML内容,不包括CSS @media print{ ... }可以设置打印时样式 正文 网页效果: 目标:右键点击打印按钮时能打印表格,忽略下方的文字和图片,...