当年笨蛋写的文字。
% !TeX encoding = UTF-8
% !TeX program = xelatex
% !TeX spellcheck = en_US
\documentclass[fontset=founder, a4paper]{ctexart}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{enumerate}
\usepackage{listings}
\usepackage[backref, colorlinks]{hyperref}% colorful links instead of ugly boxes
\hypersetup{
urlcolor = blue, % color for external hyperlinks
linkcolor = blue, % color for internal links
citecolor = red, % color for citations
}%
\providecommand{\abs}[1]{\lvert#1\rvert}
\providecommand{\norm}[1]{\lVert#1\rVert}
\begin{document}
\title{解除网页文字复制限制}
\author{李钦远}
\maketitle
\subsection*{为什么网页可以阻止复制文字?}
这里用到的是网页的一个特性:\texttt{JavaScript}。
\texttt{JavaScript}是一种编程语言,可以辅助网页的显示,并且用于实现动态页面的效果。
程序通过JavaScript语言修改了普通的右键菜单的功能,阻止了文字的复制。
当然,还有其他的技术可以阻止文字复制。比如通过透明的图片覆盖在文字上,或者直接以图片格式显示出文字。
这些情况下有对应的其他处理方式。
\subsection*{如何解除复制文字限制?}
\subsubsection*{禁用\texttt{JavaScript}}
\paragraph*{好处}
\begin{itemize}
\item 很多浏览器都支持直接禁用\texttt{JavaScript}。
\end{itemize}
\paragraph*{缺陷}
\begin{itemize}
\item 网页上的动态要素都无法实现,有的网页可能根本加载不出基本的文字,导致文档复制限制虽然被解除了,但是文档自身也加载不出了。
\end{itemize}
\paragraph*{兼容性}百度文库可以通过该方法复制文字,但是存在文档加载不全的现象。
\paragraph*{操作}搜索对应的浏览器``如何禁用\texttt{JavaScript}''
\subsubsection*{禁用\texttt{DOM}的\texttt{contextmenu}事件}
\paragraph*{好处}
\begin{itemize}
\item \texttt{JavaScript}语言通过修改对\texttt{contextmenu}(上下文菜单,也就是右键菜单)\texttt{DOM}事件的响应,
使得右键菜单的功能由默认的弹出菜单,变成了网页自己的显示复制限制。因此,直接不允许网页修改点击右键的行为,
可以使得原本的菜单得以显示,从而进一步进行文本的复制。
\end{itemize}
\paragraph*{缺陷}
\begin{itemize}
\item 并非所有浏览器都有能力单独禁用这一项\texttt{JavaScript DOM}事件。
\item 有的百度文档通过该方法复制得到的文字排版上存在很大问题。
\end{itemize}
\paragraph*{兼容性}当浏览器为Firefox时,百度文库可以通过该方法复制文字,但是某些文档复制后存在排版错乱的问题。
\paragraph*{操作}
\begin{enumerate}
\item 在Firefox地址栏中输入\texttt{about:config},回车或点击``转到''。
\item 阅读并点击确认风险提示。
\item 在上方的搜索条内输入\texttt{dom.event.contextmenu.enabled}并等待自动搜索进行。
默认情况下会搜索到两个条目,需要对名称完全匹配的条目进行修改。
\item 点击条目右方的切换按钮,将该条目的值由默认值\texttt{true}修改为\texttt{false}。
\item 这样,所有网页的右键菜单都会被重置为系统默认的右键菜单。很多网页文字复制限制将会被解除。
\end{enumerate}
\subsubsection*{通过脚本解除复制限制}
\paragraph*{好处}
\begin{itemize}
\item 网站通过\texttt{JavaScript}实现文字复制限制,同样也可以通过附加脚本利用\texttt{JavaScript}来解除该限制。
\end{itemize}
\paragraph*{缺陷}
\begin{itemize}
\item 从网络中下载并执行不可信的脚本存在安全风险。
\item 需要高级的浏览器(Firefox,Chrome)配合特定的扩展程序(比如\href{https://violentmonkey.github.io/}{这个}),
安装并执行脚本才可以达到目的。
\end{itemize}
\paragraph*{操作}可以参考\href{https://greasyfork.org/en/scripts/28497-remove-web-limits-modified}{这个}脚本。
\end{document}