Tips:如何突破某些网站登录后只能复制文字的限制。比如我想复制本网页的一个标题“SAPFiori2.0用户体验设计理念荣获红点奖”。但是,当我按下键盘上的复制??快捷键CtrlC时,却收到了这个提示,告诉我复制操作只能在登录后进行。但是为了登录,我必须先注册,这是一个有点麻烦。如果赶时间的话,可以利用本文的小技巧,实现无需先注册再登录,即可实现任意复制网页文字的效果。下面是详细步骤。1.照常打开要复制文本的网页,暂时按CtrlC。按F12打开Chrome浏览器的开发者工具。切换到“网络”选项卡。为了避免干扰,首先点击清除按钮清除网络选项卡下的所有网络请求。最后如下图所示:2、照例点击快捷键CtrlC进行复制。此时,我看到了预期的登录框。然而,我们关心的是:哪一行JavaScript代码触发了这个登录框?从Chrome开发者工具的网络选项卡中,我们找到了答案。首先,在Network选项卡中,我们找到登录对话框的实现文件artlogin.html。然后,将鼠标放在下图中标有“2”的VN1134:1上,Chrome开发者工具会自动在悬浮窗中显示哪一行JavaScript产生了artlogin.html的加载。答案是标有“3”的几个函数。这些函数以调用堆栈的形式显示。调用堆栈底部的函数是DisplayPageinfo.document.body.oncopy。做过前端开发的朋友只要看到这个oncopy,心里就知道:这是网站处理用户按Ctrl+C复制文本的处理函数,oncopy会调用copyArt功能。现在我们进入copyArt函数一探究竟。果不其然,下图中的第3961行尝试读取用户对当前网站的cookie信息。如果cookie为空,则在第3962行输入if语句的第一个分支:第3970行的$("#LayerLogin").load("/artlogin.html")负责加载登录对话框。说到这里,解决方案已经很明确了:在执行第3962行判断网站cookie的代码之前,我们随机分配一些内容给变量CurUserNameCookiescgcg,使其值不为空,并确保进入ELSE分支如果。如下图所示,在Chrome开发者工具的Console选项卡中为Cookie变量赋值:于是我们进入了我们预期的ELSE分支。此时,我在网页上选中的文字“SAPFiori2.0用户体验设计理念荣获红点奖”已经成功写入JavaScript变量selhtml,请看代码第3986行。直接点击Chrome开发者工具的“继续”按钮结束调试,打开记事本按快捷键Ctrl+V粘贴,成功。获取更多Jerry原创技术文章,请关注公众号“汪子熙”或扫描下方二维码:
