Chrome

谷歌技术专家关于JavaScript的一个引人注目的观点

若如初见. 提交于 2021-01-13 12:41:29
谷歌的一位技术专家曾经和我分享过关于 JavaScript 的一个引人注目的观点:它不是真正的内聚编程语言——至少不是正式意义上的内聚编程语言。 ECMA-262规范定义了JavaScript,但没有一个真正的实现。更重要的是,这种语言远非封闭的。 它游走在一个名副其实的相邻规范的海洋中,这些规范管理着 JavaScript 涉及的所有 api: DOM、网络请求、系统硬件、存储、事件、文件、加密,以及数百种其他规范。Web浏览器及其各种 JavaScript 引擎都按照它们认为合适的方式实现这些规范。 Chrome 有 Blink/V8, Firefox 有 Gecko/SpiderMoney, Safari 有 WebKit/JavaScriptCore。 浏览器将以符合规范的方式运行几乎所有的 JavaScript,但 web 上到处都是每种浏览器特性的示例。因此,JavaScript被更准确地描述为一组浏览器实现。尽管 web 纯粹主义者可能坚持认为 JavaScript 不应该是 web 页面的组成部分,但他们必须承认,如果没有它,现代 web 将会严重退化。 可以毫不夸张地说,JavaScript 实际上是不可避免的:手机、电脑、平板电脑、电视、游戏机、智能手表、冰箱,甚至汽车现在都有运行 JavaScript 的 web 浏览器

content-type的几种取值

主宰稳场 提交于 2021-01-13 06:55:40
四种常见的 POST 提交数据方式 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样: <method> <request-url> <version> <headers> <entity-body></entity-body></headers></version></request-url></method> 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。 但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。 application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了。浏览器的原生

社区招聘需求汇总(2021-01-09)

若如初见. 提交于 2021-01-12 23:04:16
最近社区里有些招聘的需求,我们汇总了下,有兴趣的朋友请自行联系。 如果你的团队也在招聘,可以和我们联系,我们汇总后,会不定时的发出。 币信 区块链工程师: 岗位描述 主要负责公链基础设施研究与开发; 负责公链上层的应用产品的设计和研发工作; 不限技术栈,可根据个人开发偏好进行技术选型; 职位要求 对区块链技术有浓厚兴趣; 熟悉常用的数据结构和算法; 有区块链, 分布式网络、应用密码学、网络安全等研发经验; 熟悉 Golang 、C/C++,Rust,java,Javascript,Python 等至少一种编程语言,良好的编程习惯 优先 有过区块链钱包开发经验; 熟悉以太坊 ETH 及 Solidity 合约语言; 熟悉常用加密算法 币信 前端工程师: 岗位描述 主要负责加密货币钱包的浏览器插件开发; 单页应用 SPA 的开发和桌面端封装( Electron ); 不限技术栈,可根据个人开发偏好进行技术选型 职位要求 独立思考、分析、解决、归纳问题的能力; 2 年及以上相关工作经验,编码能力和编码风格良好,精通常用的数据结构与算法; 熟悉 Javascript / HTML / CSS / HTTP,熟悉 W3C 标准与 ES 规范,熟悉 Web 语义化和相关前端技术; 熟练使用目前各类主流前端框架( React / Vue / Angular 选之一 )并理解相关实现原理 优先

Python+Selenium练习篇之2-利用ID定位元素

人盡茶涼 提交于 2021-01-12 07:01:17
在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段。如果感觉有点困难,不能立马理解,没有关系。把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查找,匹配等手段,得到新的字符串或字符串数组,然后根据新得到的字符串进行判断用例是否通过。 本篇介绍如何通过元素节点信息ID来定位该元素,使用id来定位元素虽然效率要高于XPath,但是实际测试测项目,能直接通过id定位的元素还是比较少,以下来举例百度首页搜索输入框的id定位。 脚本如下: # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("https://www.baidu.com") try: driver.find_element_by_id("kw") print ('test pass: ID found') except Exception as e: print ("Exception found", format(e)) driver.quit() 这里,我们通过try except语句块来进行测试断言,这个在实际自动化测试脚本开发中,经常要用到处理异常

Python+Selenium练习篇之3-利用tag name定位元素

╄→гoц情女王★ 提交于 2021-01-12 06:56:23
前一篇文章介绍了如何通过元素的id值来定位web元素,本文介绍如何通过tag name来定位元素。个人认为,通过tag name来定位还是有很大缺陷,定位不够精确。主要是tag name有很多重复的,造成了选择tag name来定位页面元素不准确,所以使用这个方法定位web元素的机会很少。 什么是tag name? 还是以百度首页搜索输入框,在火狐浏览器,右键,通过firepath,检查元素,看下图: 上面图片中红色圈选区域的标签名称都是tag name;实际上我们目标元素是输入框,应该是input这个tag name,在图中蓝色高亮区域。但是如果只是通过input这个tag name来定位,发现上面有很多input的选项。所以我们扩大节点的参照选择,我们选择上面这个form来作为我们tag name。 看看如何写定位form这个元素的脚本: # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("https://www.baidu.com") try: driver.find_element_by_tag_name("form") print ('test pass

由Nginx的DNS缓存导致的访问404

孤者浪人 提交于 2021-01-12 04:22:49
现象 访问某个URL出现404,而且全站都是404。通过日志查看Nginx的规则也正确,请求被代理到指定位置。 排查 最近针对这个站点没有修改过Nginx配置也没有站点升级。所以应该是其他原因。 首先PING代理到的域名,发现可以解析 查看日志 发现解析的2个地址都返回502,这里[ip,ip]是因为第一个访问失败才走的第二个,最后2个都失败了,后端返回502,然后Nginx给前端重定向到自定义的404页面。 仔细一观察发现PING解析的IP和Nginx日志解析的IP不同。因为我们这里代理是通过域名,所以后端IP不可控,怀疑是Nginx缓存了DNS解析,后端变化而Nginx没有更新所导致,顾首先重启一下Nginx服务。 重新访问并查看日志 总结 这种问题通常发生在Nginx代理使用代理到域名的情况下发生,尤其是代理到一个第三方的地方,它的域名解析出来的IP可能会更换(出于安全考虑),而Nginx本身有DNS缓存机制,默认你可以不配置,这样它缓存DNS解析的时长就是它通过查询DNS服务器获得记录的TTL时间。 DNS缓存时长 DNS缓存有操作系统级别也有应用程序级别,OS级别都有生存时间,时间到了就会刷新缓存(有时候根据需要我们也会强刷)。所以你有时候需要配置。默认情况下Nginx的resolver 没有配置,也没有设置valid时间

有人靠"抢茅台"月入百万,脚本曝光,开源可用!

偶尔善良 提交于 2021-01-12 03:01:53
大家可能不知道,囤茅台已经成为了一门生意! 在很早之前,网上甚至还流传着这么一句话: 买 茅台股票还不如买上 一车 茅台酒屯着,这个玩意比金子还涨价快! 53度飞天茅台官方指导出手价是1499元,但是正常情况下,1499根本买不到,线下的专卖店可以买到2000-3000元左右,而且还容易买到假货! 相信很多人都知道,现在京东、苏宁、淘宝等各大网站都推出了茅台秒杀活动,以活动价格1499的价格进行抢购。 抢到就是赚到,二手市场茅台价格最低2000起,甚至会飙到3000左右,转手最少赚500元。 尤其是最近临近过年,茅台更成了畅销品。 所以,很多人蹲守在各大网站,第一时间进行线上抢购。 现在抢购茅台,甚至已经成为了一个产业链,有人专门教大家怎么利用工具抢购茅台,抢购成功,一次收费500元! 开源工具 已经有一位大神开发了一个抢购脚本,免费进行了开源,很多人都是使用这个脚本抢到了茅台。 看了一下它的实现思路。 主要是这两种: 一种是利用py脚本模拟浏览器请求,来实现抢茅台; 另一种是通过Chrome插件来模拟用户点击行为,来实现抢茅台行为。 原作者分享的开源项目超过了70K Star,但某种不知道的原因已经删除了。 由于备份的比较早,网上还存在着2份开源代码,对这份开源项目感兴趣的朋友,可以在下方公众号内回复: 茅台 开源项目获取方式 1. 识别并关注下方公众号👇; 2.

12 个实用的前端开发技巧总结

萝らか妹 提交于 2021-01-11 14:55:46
1. 利用 CSS 穿透覆盖默认样式 常见发生场景:假如我们需要通过 input,type="file"来上传文件,而这个 input 的默认样式,可以说是非常地 丑 。所以我们希望通过一张图片,与这个 input 大小一样,位置一致地盖在上面。这个时候,显然,这个时候点击图片,input 是不会起作用的。就是因为 img 隔绝了 click 的穿透,而我们希望的是,这个 img 只是视觉上遮挡了 input 的样式,但是点击的时候还是点击到 input。所以,只要让 img 可穿透即可。 css 代码如下: img { pointer-events : none; } 2. 实现自定义原生 select 控件的样式 由于 select 移动端原生样式很丑,但是原生弹出效果是符合我们设计的原则。直接修改 select 的样式的时候,一个奇怪的现象出现了,在 chrome 上调试的时候,自己定义的样式起了作用,在 Android 手机上也起了作用,但是到了 ios 手机上就不行了,典型的不兼容问题,这个时候禁用原生的样式即可。 css 代码如下: select { -webkit-appearance : none; } 3. 文本溢出处理 移动设备相对来说页面较小,很多时候显示的一些信息都需要省略部分。最常见的是单行标题溢出省略,多行详情介绍溢出省略。现在都用框架开发了

有人靠"抢茅台"月入百万,脚本曝光,开源可用!

╄→尐↘猪︶ㄣ 提交于 2021-01-11 14:02:18
“ 大家可能不知道,囤茅台已经成为了一门生意!在很早之前,网上甚至还流传着这么一句话:买茅台股票还不如买上一车茅台酒屯着,这个玩意比金子还涨价快! 53 度飞天茅台官方指导出手价是 1499 元,但是正常情况下,1499 根本买不到,线下的专卖店可以买到 2000-3000 元左右,而且还容易买到假货! 相信很多人都知道,现在京东、苏宁、淘宝等各大网站都推出了茅台秒杀活动,以活动价格 1499 的价格进行抢购。 抢到就是赚到,二手市场茅台价格最低 2000 起,甚至会飙到 3000 左右,转手最少赚 500 元。 尤其是最近临近过年,茅台更成了畅销品。所以,很多人蹲守在各大网站,第一时间进行线上抢购。 现在抢购茅台,甚至已经成为了一个产业链,有人专门教大家怎么利用工具抢购茅台,抢购成功,一次收费 500 元! 开源抢茅台工具 已经有一位大神开发了一个抢购脚本,免费进行了开源,很多人都是使用这个脚本抢到了茅台。 看了一下它的实现思路,主要是这两种: 一种是利用 py 脚本模拟浏览器请求,来实现抢茅台。 另一种是通过 Chrome 插件来模拟用户点击行为,来实现抢茅台行为。 原作者分享的开源项目超过了 70K Star,但某种不知道的原因已经删除了。 由于备份的比较早,网上还存在着 2 份开源代码,对这份开源项目感兴趣的朋友, 可以在下方公众号内回复:茅台 。 开源项目获取方式

爬虫面试必备,几种验证码的解决方案

霸气de小男生 提交于 2021-01-11 09:56:43
点击上方“ Python学习开发 ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 截止到今天咸鱼已经写了很多期关于 Js 逆向的文章,不过这么多的文章都有一个共同点,都是关于加密参数或者密码加密的解析,很多读者在后台私信希望能够出一些关于滑动验证或者人机验证的分析教程。 于是咸鱼总结了目前遇到过的的验证码类型以及总结出来的相关处理方式和大家聊一聊。 现在市面上的验证码的类型大致有下面几种类型。 图形验证码 比较常见的英文数字组合成的图形验证码,常常辅以各类 干扰线 和 扭曲 图片中的内容达到提高混淆难度的目的,并且通过加长图片中的文字长度提升识别成本。 7位英数-难度高 4位英数-难度中等 4位英数-难度低 像这类验证码的处理方案有很多种,简单给大家概括一下。 难度中低的两类验证码,安装 tesserocr ,通过 OCR 技术结合 Python 的 tesserocr 库可以就可以完成识别。如果验证码中带有简单干扰线可以使用灰度和二值化的方法提高代码的识别率。 常用示例代码: import tesserocr from PIL import Image image = Image .open( 'code2.jpg' ) image = image.convert( 'L' ) threshold = 127 table = [] for i in range(