万码EZQPETUV
IP:上海
0关注数
0粉丝数
0获得的赞
中国民航大学
本科
工作0年
编辑资料
链接我:

创作·35

全部
问答
动态
项目
学习
专栏
万码EZQPETUV

用了docker运行node,但是依赖还没装,容器又没启动

想了一个方案,用bash先启动一个容器,然后装一下依赖即可: docker run -it -v ./app:/usr/src/app your_node_image_name /bin/bash root@247543a930d6:/usr/src/app# npm install
0
0
0
浏览量0
万码EZQPETUV

docker中安装ros

我不知道到你第二种方案要配置的东西有多少,我说我能看到的哈。 从docker-ros看到,ros-core的Dockerfile是基于ubuntu:trusty这个镜像,要配置的东西也很多,并且其他几个相关的ros-base、robot、perception等也是基于ros-core这个镜像。 目测下来第一种方案比较合适,毕竟本身就是基于Ubuntu镜像,你把自身Dockerfile当中的相关配置在ros镜像上弄即可。
0
0
0
浏览量0
万码EZQPETUV

如何从docker容器中获取宿主机的mac地址等信息

最简单的办法就是在运行Docker容器的时候将宿主的MAC地址以环境变量方式传进去。
0
0
0
浏览量0
万码EZQPETUV

如何从docker容器中获取宿主机的mac地址等信息

docker的容器都隔离在docker daemon所制造的子网中,所以是获取不到宿主主机的MAC的,这也符合容器隔离的规范,试想如果容器能够直接访问宿主主机,那容器隔离就会被破坏了。
0
0
0
浏览量0
万码EZQPETUV

mac休眠后,docker服务会断掉

容器看似运行正常, 服务看似正常. 但__容器里的 Unix 时间戳是错的!__, 这导致一个连锁 bug, 排查了整整一下午, 终于才发现, 容器里获取到的时间戳被冻结在了合上盖子的那一刻.... 噢对了, docker 设计上是有自动重启选项的, 创建容器的时候设置–restart为合适的值即可. 它有好几个选项. 始终重启/非手动退出后重启/不重启
0
0
0
浏览量0
万码EZQPETUV

从docker容器中获取环境变量

在容器内运行 echo "$ENV_VAR" 以便在容器中发生变量替换的正确方法是: docker exec bash -c 'echo "$ENV_VAR"'
0
0
0
浏览量0
万码EZQPETUV

从环境文件中读取环境变量

我使用 Python Dotenv 库。只需安装库 pip install python-dotenv ,使用您的环境变量创建一个 .env 文件,然后像这样在代码中导入环境变量: import os from dotenv import load_dotenv load_dotenv() MY_ENV_VAR = os.getenv('MY_ENV_VAR') 从 .env 文件: MY_ENV_VAR="This is my env var content."
0
0
0
浏览量0
万码EZQPETUV

docker搭建环境的方式

真算起来其实有四种,不过严格意义上的的确就两种。 1.拉起系统镜像作为初始容器,手动安装所需软件并配置,但是有些违背 Docker 的初衷:一个容器只干一件事 2.类似(1),只不过是用 Dockerfile 声明,一般而言(2)写的好做出来的镜像体积会比(1)小一些 3.直接拉取官方制作的软件镜像,这个多数情况下会比(1)小很多,毕竟精简,所以你感觉没有 yum 装的多,但是对于 Nginx 这类软件来说,它的配置是可以通过 docker -v 外挂绑定配置文件所在的目录来灵活控制的,这样也更符合 Docker 的理念 4.基于1、2、3,使用 docker-compose 一类的编排技术,将配置(-v -e --link 等等)也都写成文件形式,利于传输和重复部署。
0
0
0
浏览量0
万码EZQPETUV

docker适合做前端测试环境吗?

可以看看这个https://github.com/alibaba/f2...
0
0
0
浏览量0
万码EZQPETUV

docker只适合做服务端开发,不适合做GUI开发吗?

docker的初衷如官网所说 Develop, Ship and Run Any Application, Anywhere 将应用以及运行环境打包成容器/镜像,发布到不同平台,我觉得这和GUI开发是不符的
1
0
0
浏览量0
万码EZQPETUV

容器服务之间怎么通讯

此类场景 建议用docker-compose 做处理,在同个容器网络下用主机名作为域名即可 跨容器组可以用 docker0 网桥ip 代替内网ip
3
0
0
浏览量0
万码EZQPETUV

容器服务之间怎么通讯

标准的docker容器可以把容器的端口和主机端口联系起来,这样其它容器可以访问主机对应端口访问到相应服务。 另外所有容器其实是在同一个局域网段内,如果相互之间知道这个特殊的IP,其实也是可以直接互相访问的,注意从容器的角度看,这个localhost其实是容器分配的特殊IP,和主机的localhost对应的不是同一个东西。
2
0
1
浏览量0
万码EZQPETUV

容器服务之间怎么通讯

1.把容器里面的端口映射到本机 2.使用 —link 参数,连接两个容器 3.两个容器放在一个 network 下
1
0
0
浏览量0
万码EZQPETUV

哪些服务适合虚拟机,而不是容器?

1.CPU指令集架构与宿主机不一致的时候,只能用虚拟机; 2.服务用到的内核能力,无法被宿主机的内核支持划分单独的命名空间,只能用虚拟机。 其他情况都应尽量使用容器。 无论是网络驱动,还是文件驱动,都可以自己实现。 容器提供了更细粒度的资源控制和权限控制。且因为没有中间的虚拟设备转换过程,所以性能更好。
0
0
0
浏览量0
万码EZQPETUV

数据库适合docker及容器化吗?

量小的时候随便搞,量大了有些东西就不行了,传统型数据库和docker并不对路,建议不要直接容器化,非要把数据库容器化,那么需要各种系统的支撑,包括中间件系统、容器化系统。 如果你的数据库能够自动伸缩、容灾、切换、自带多节点解决方案等,docker算是一个比较好的方案。 但是如果不能,还是不要用docker。 在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。 流量小的情况下,什么东西容器化都行。数据库,应用,hadoop,各种节点,nginx。 量大的情况下,存储相关的不适合容器化,应用层、业务层等无状态的服务适合容器化,缓存这类内存密集型的服务可以容器化。 简单来说就是三个问题,容灾、性能和数据一致性。 就mysql这种传统数据库而言,仅仅我所能列出来的问题就有如下这么多: 1.mysql怎么容器化? 2.主库mysqld跪了怎么办? 3.主库dockerd跪了怎么办? 4.从库mysqld跪了怎么办? 5.从库dockerd跪了怎么办? 6.能否在高峰来临之际通过容器快速扩容mysql?方案? 7.数据主从切换方案?一致性如何保证? 8.高峰时期量足够大,有时候一般一台物理机的容量只够一个mysql进程。 9.那么同样是单台机器,为什么不能直接启动mysql? 10.为什么还要外面套一层容器?对性能损耗多少? 11.mysql如何升级? 12.数据卷是否会丢失数据?(损坏容器我遇到过很多次了……) 但是mysql也不是全然不能容器化。 对数据丢失不敏感的业务(例如京东搜索搜到的商品)就可以数据化,利用数据库分片来实现通过增加实例数增加吞吐量。 题主原文中提到的问题,有些东西是有槽点的,但是考虑的很周全。比如如下问题就很有槽点(关于共享数据目录): 容易水平伸缩?是否要在多个实例之间共享数据目录?你不害怕直接数据并发问题和可能的数据损坏吗?使用专用数据环境部署多个实例不会更安全吗?最后搞一个主从复制? 就我目前接触到的数据库来看,只有cassandra这类(个)(还有tidb和cockroachdb,但是目前还没遇到过大公司的用例)数据库适合容器化。 但是cassandra自身也接近是无状态了:自己提供容灾,扩容,切换方案。 以下提一下京东。 京东是个异类,但是京东也提到过类似的问题和需要注意的地方。 计算类应用、无状态应用优先,例如微服务特别容易迁移到弹性云。 应用迁移到弹性云,最好选择统一的规格,避免各个实例的负载不均衡。 应用从物理机迁移到弹性云后,实例数量会增加,相应对后端服务的连接数会增加,特别是数据库连接,所以需要防止连接过载。 在弹性云上共享磁盘IO,要避免应用刷日志,减少本地读写文件,采用JFS或JIMDB来满足文件存储或共享数据需求。 容器的CPU核数原低于原有物理机的核数,应用需要根据CPU核数来合理地配置线程数和网络参数。 修改底层,让应用在运行时能准确地拿到自身容器的核数。 甚至,对docker做了很多的定制。 可以看京东分享。
0
0
0
浏览量0
万码EZQPETUV

docker和其他VM技术的区别是什么?

了解虚拟化和容器如何在低级别工作可能会有所帮助。这将清除很多事情。 注意:我在下面的描述中进行了一些简化。有关更多信息,请参阅参考资料。 虚拟化如何在低级别工作? 在这种情况下,VM 管理器接管 CPU 环 0(或较新 CPU 中的“根模式”)并拦截来宾操作系统进行的所有特权调用,以制造来宾操作系统拥有自己的硬件的假象。有趣的事实:在 1998 年之前,人们认为在 x86 架构上实现这一点是不可能的,因为没有办法进行这种拦截。 VMware 的人是第 一个想到重写内存中的可执行字节以实现来宾操作系统的特权调用的人。 最终效果是虚拟化允许您在同一硬件上运行两个完全不同的操作系统。每个客户操作系统都会经历引导、加载内核等所有过程。您可以拥有非常严格的安全性。例如,客户操作系统无法获得对主机操作系统或其他客户的完全访问权限,从而搞砸了。 容器如何在低级别工作? 大约在 2006 年,包括一些 Google 员工在内的人们实现了一个新的内核级功能,称为 命名空间(不过这个想法 早 在 FreeBSD 中就已经存在了)。操作系统的一项功能是允许进程之间共享网络和磁盘等全局资源。如果这些全局资源被包装在命名空间中以便它们只对在同一命名空间中运行的那些进程可见怎么办?比如说,您可以获得一块磁盘并将其放在命名空间 X 中,然后在命名空间 Y 中运行的进程无法看到或访问它。同样,命名空间 X 中的进程无法访问分配给命名空间 Y 的内存中的任何内容。当然,X 中的进程无法看到或与命名空间 Y 中的进程通信。这为全局资源提供了一种虚拟化和隔离。这就是 Docker 的工作方式:每个容器在自己的命名空间中运行,但使用与所有其他容器 完全相同 的内核。发生隔离是因为内核知道分配给进程的命名空间,并且在 API 调用期间,它确保进程只能访问其自己的命名空间中的资源。 容器与虚拟机的局限性现在应该很明显了:您不能像在虚拟机中那样在容器中运行完全不同的操作系统。但是,您 可以 运行不同的 Linux 发行版,因为它们共享相同的内核。隔离级别不如虚拟机强。事实上,在早期的实现中,有一种方法可以让“guest”容器接管主机。您还可以看到,当您加载新容器时,操作系统的全新副本不会像在 VM 中那样启动。所有容器 共享同一个内核。这就是容器重量轻的原因。同样与 VM 不同的是,您不必为容器预先分配大量内存,因为我们没有运行操作系统的新副本。这允许在一个操作系统上运行数千个容器,同时对它们进行沙箱化,如果我们在它们自己的虚拟机中运行操作系统的单独副本,这可能是不可能的。
3
0
0
浏览量0
万码EZQPETUV

docker和其他VM技术的区别是什么?

Docker 最初使用 Linux Containers (LXC),但后来改用 runC (以前称为 libcontainer ),它运行在与其主机相同的操作系统中。这允许它共享大量的主机操作系统资源。此外,它使用分层文件系统 ( AuFS ) 并管理网络。 AuFS 是一个分层文件系统,因此您可以将只读部分和写入部分合并在一起。可以将操作系统的公共部分设为只读(并在所有容器之间共享),然后为每个容器提供自己的挂载以供写入。 因此,假设您有一个 1 GB 的容器映像;如果您想使用完整的 VM,则需要 1 GB x 所需的 VM 数。使用 Docker 和 AuFS,您可以在所有容器之间共享 1 GB 的大部分,如果您有 1000 个容器,您仍然可能只有 1 GB 多一点的空间用于容器操作系统(假设它们都运行相同的操作系统映像) . 一个完整的虚拟化系统获得分配给它自己的一组资源,并进行最少的共享。你得到更多的隔离,但它更重(需要更多的资源)。使用 Docker,您可以获得更少的隔离,但容器是轻量级的(需要更少的资源)。因此,您可以轻松地在主机上运行数千个容器,而且它甚至不会闪烁。试着用 Xen 来做,除非你有一个非常大的主机,否则我认为这是不可能的。 一个完整的虚拟化系统通常需要几分钟才能启动,而 Docker/LXC/runC 容器需要几秒钟,通常甚至不到一秒钟。 每种类型的虚拟化系统各有利弊。如果您想要完全隔离并保证资源,那么完整的 VM 是您的最佳选择。如果您只是想将进程彼此隔离并希望在合理大小的主机上运行大量进程,那么 Docker/LXC/runC 似乎是要走的路。 有关更多信息,请查看 这组博客文章,这些文章很好地解释了 LXC 的工作原理。 为什么将软件部署到 docker 映像(如果这是正确的术语)比简单地部署到一致的生产环境更容易? 部署一致的生产环境说起来容易做起来难。即使您使用 Chef 和 Puppet 之 类的工具,也总会有操作系统更新和其他在主机和环境之间发生变化的事情。 Docker 使您能够将操作系统快照到共享映像中,并使其易于部署在其他 Docker 主机上。在本地,dev、qa、prod 等:都是相同的图像。当然,您可以使用其他工具来做到这一点,但几乎没有那么容易或快速。 这非常适合测试;假设您有数千个测试需要连接到数据库,并且每个测试都需要数据库的原始副本并将更改数据。经典的方法是在每次测试后使用自定义代码或 Flyway 等工具重置数据库 - 这可能非常耗时,并且意味着必须连续运行测试。但是,使用 Docker,您可以创建数据库的映像并在每个测试中运行一个实例,然后并行运行所有测试,因为您知道它们都将针对同一数据库快照运行。由于测试是在 Docker 容器中并行运行的,因此它们可以同时在同一个盒子上运行,并且应该更快地完成。尝试使用完整的 VM 执行此操作。 从评论… 有趣的!我想我仍然对“快照[ting] OS”的概念感到困惑。如果没有制作操作系统的图像,如何做到这一点? 好吧,让我们看看我能不能解释一下。您从一个基础映像开始,然后进行更改,并使用 docker 提交这些更改,然后它会创建一个映像。此图像仅包含与基础的差异。当你想运行你的镜像时,你还需要基础,它使用分层文件系统将你的镜像分层在基础之上:如上所述,Docker 使用 AuFS。 AuFS 将不同的层合并在一起,你得到你想要的;你只需要运行它。您可以继续添加越来越多的图像(层),它将继续只保存差异。由于 Docker 通常构建在来自 注册表 的现成映像之上,因此您很少需要自己“快照”整个操作系统。
0
0
0
浏览量0
万码EZQPETUV

安卓手机如何安装docker?

docker-compose 已在 Go 中重写,现在是 docker 命令 docker compose 因此,不再需要“安装”它。 见 docker compose 。 在 Docker for Mac 和 Windows 等桌面系统上,Docker Compose 包含在这些桌面安装中。 根据文档, Docker for Windows 和 Docker Toolbox 已经包含 Compose 以及其他 Docker 应用程序,因此大多数 Windows 用户不需要单独安装 Compose。 2017 年更新:现在使用 “Docker for Windows” 正式管理(适用于支持 Hyper-V 的 Windows 10)。 请参阅“ 为 Windows 安装 Docker ”。 它确实有一个用于 Docker 的 巧克力 安装 包,所以: choco install docker-for-windows # or choco upgrade docker-for-windows 同样,这需要 64 位 Windows 10 专业版、企业版和教育版(1511 年 11 月更新,内部版本 10586 或更高版本)和 Microsoft Hyper-V。 对于其他 Windows,您仍然需要 VirtualBox + Boot2Docker。 更新: docker compose 1.5 (2015 年 11 月)应该使其正式可用于 Windows(自 RC2 起)。 PR 2230 和 PR 2143 之 类的拉取请求有所帮助。 提交 13d5efc 详细介绍了 Windows 二进制文件的官方构建过程。 原始答案(2015 年第一季度至第三季度)。 警告:根据 Ed Morley ( edmorley ) 的说法,下面的原始答案(“ docker-compose 在容器中”)似乎有一个错误。 “容器中的 docker-compose”方法似乎存在缓存问题(参见 问题 #6:“未检测到对 docker-compose.yml 和 Dockerfile 的更改” ) 埃德建议: 因此,就目前而言,在 --- 中运行 Python docker-compose boot2docker 似乎是 Windows 用户最可靠的解决方案(已经花了很多时间试图与替代方案进行斗争) 。 要从 PyPI 安装 docker-compose,请从 boot2docker 内部运行: > docker@boot2docker:~$ > tce-load -wi python && curl https://bootstrap.pypa.io/get-pip.py | \ > sudo python - && sudo pip install -U docker-compose > > ``` > > 为了避免每次 `boot2docker` VM 重新启动时都必须运行上述命令(因为更改不会持续存在),您可以使用 `bootlocal.sh` 像这样: > > ``` > docker@boot2docker:~$ > echo 'su docker -c "tce-load -wi python" && \ > curl https://bootstrap.pypa.io/get-pip.py | \ > python - && pip install -U docker-compose' | \ > sudo tee /var/lib/boot2docker/bootlocal.sh > /dev/null && \ > sudo chmod +x /var/lib/boot2docker/bootlocal.sh > > ``` > > (The `su docker -c` gymnastics are required since `tce-load` cannot be run as `root` , and `bootlocal.sh` is run as `root` . 修复 [#915](https://github.com/boot2docker/boot2docker/issues/915) 后,应该不需要 `chmod` 的 `bootlocal.sh` 。 > > 如果您需要追加,请添加 `-a` 到 `tee` 命令,而不是覆盖 `bootlocal.sh` 。) > > 如果您希望使用 docker-compose 的预发布版本,请将 `pip install -U docker-compose` 替换为 `pip install -U docker-compose>=1.3.0rc1` 或等效版本。 * * * 原答案: 我还通过以下方式在图像中运行 [`docker-compose`](https://docs.docker.com/compose/) (在 Windows boot2docker 上): - 在 `/c/Users//myproject/compose` 中克隆 [https://github.com/docker/compose](https://github.com/docker/compose) (为了具有持久性,因为 `/c/Users/` 是 [自动安装的,当我使用带有扩展包的 VirtualBox 时](https://stackoverflow.com/a/29554135/6309)) - 构建 docker-compose 图像: cd /c/Users//myproject/compose # that will put the repo in a detached HEAD, but it does not matter here git checkout 1.2.0 docker build -t docker-compose . - 添加一个' `dc` '别名(在一个 [`profile` 文件](https://github.com/VonC/b2d/blob/b0b7dcdee2f59fd3762fa10eac0522f1591cf372/profile#L53) 中,我在 [启动boot2docker ssh会话](https://github.com/VonC/b2d/blob/b0b7dcdee2f59fd3762fa10eac0522f1591cf372/b2d.bat#L6) 之前 [复制到我的 `/home/docker/.ashrc`](https://github.com/VonC/b2d/blob/b0b7dcdee2f59fd3762fa10eac0522f1591cf372/b2d.bat#L5) 。) dc='docker run --rm -i -t -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:`pwd` -w `pwd` docker-compose' ”` 从那里,’ dc up ‘或’ dc ps ‘才有效。在 Windows 上。使用 boot2docker 1.6。 docker-compose 已在 Go 中重写,现在是 docker 命令 docker compose 因此,不再需要“安装”它。 见 docker compose 。
0
0
0
浏览量0
万码EZQPETUV

WSL2下的docker容器无法访问宿主机下的docker容器端口如何解决?

在容器内使用host.docker.internal 代替 localhost之后连上了。分析原因,应该是因为容器内部的网络环境是与宿主机隔离的。如果在容器内使用 localhost,实际上指的是容器自己的网络接口,而不是宿主机的。 另外之前还试了下在docker里面新建一个网络,然后把需要互相访问的两个容器添加到同一个网络里,这个方法也有效
3
0
0
浏览量0
万码EZQPETUV

WSL2下的docker容器无法访问宿主机下的docker容器端口如何解决?

试试容器内使用 host.docker.internal 代替 localhost
2
0
0
浏览量0
万码EZQPETUV

如何处理http站点chrome80.0后samesite的问题?

目前网站是http的,并且存在多域名,因此受到了samesite的影响。 根据建议考虑设置samesite:none secure 但是secure仅在https下可用,并且设置后的cookie在http下无法使用。 所以大家有什么解决方案吗?是不是必须升https+samesite:none secure才是唯一出路了。。。
0
1
0
浏览量187
万码EZQPETUV

关于vue.js开发chrome extension时CSP的疑惑

最近在学着制作chrome-extension,打算用element做页面组件及主题,但在此需要引入vue.js才可以.疑问就在于vue.js 2.*的使用碰到了CSP,而官方示例上只有一句话概括,让我还是有点不明所以... 尝试下载github上的vue.js,分之切换至dev,并在目录中执行npm install,随后引入dist/vue.js至html. 如果是在浏览器中直接运行html文件,无任何问题,组件及主题正确识别,但在chrome-extension中则不生效. "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816946348_Od8z.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816946348_Od8z.png) 页面代码如下 * { margin: 0; padding: 0; } body { width: 200px; height: 100px; } div { line-height: 100px; font-size: 42px; text-align: center; } 标签一 new Vue().$mount('#clock_div')
0
1
0
浏览量206
万码EZQPETUV

如何在Android 4.4 的Webview中调用js?

有人说 evaluateJavascript() 代替 loadUrl(),但是讲的不是很详细,望高手指点。http://stackoverflow.com/questions/21095665/how-to-call-javascript-with-android-4-4-webview
0
1
0
浏览量127
万码EZQPETUV

uni-app配置跨域后请求下来的数据乱了?

网址如下浏览器直接打开能获取到数据 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816694219_MW4I.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816694219_MW4I.png) 配置跨域 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816601175_6PC4.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816601175_6PC4.png)! 请求数据 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816671511_FBm7.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816671511_FBm7.png) 浏览器输出结果 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816644423_hihF.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816644423_hihF.png) 我哪里整错了吗。。。 相关代码 "h5" : { "router" : { "base" : "" }, "template" : "", "devServer": { "port": 8000, "disableHostCheck": true, "proxy": { "/hlp": { "target": "https://api.1hudoctor.com", "changeOrigin": true, "secure": false } } } } uni.request({ url: '/hlp/meta?m=city&platform=customer&device_type=miniApp_yihuundefined', dataType:"json", success: (res) => { console.log(res); } });
0
1
0
浏览量171
万码EZQPETUV

如何保存含有大量js生成内容的网页?

现在网站大多用Javascript动态生成一些内容,用浏览器打开可以看到渲染好的页面,用鼠标可以选择复制。而用浏览器保存时,却只能保存下带Javascript源码的内容,将解析后的内容保存下来。不知道能否保存解析后的,在浏览器显示的最终样式呢? 已经尝试用Firefox的保存,保存为单个网页,保存为文本都无法找到由Javascript控制生成的内容。 比如:我打开Bing词典,里面的的英英解释是由Javascript生成的,在浏览器中当然可以选择我想要的内容;而用Firefox保存之后,则找不到由Javascript生成的内容。 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816344985_lo7C.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816344985_lo7C.png) 下面是由Firefox保存为文本文件的结果: 权威英汉双解 英汉 英英 网络释义 有没有办法保存整个已经被浏览器解析之后的网页呢? 听说使用爬虫时可以用selenium,phantomjs之类的库进行解析,但是自己的需求没有这么麻烦,感觉一两个网页用不着。而手工复制的话又太笨了。有没有一个半自动化的方法呢? 比如说,用Python控制IE打开一个网页,然后保存下已经解析的内容,再对保存下的内容进行分析。
0
1
0
浏览量171
万码EZQPETUV

Chrome 浏览器出现 “Refused to execute script from” 的正确对应方法?

用Chrome浏览网站,执行一个javascript时,出现如下错误: Refused to execute script from 'http://mysite.com/info?no=31&magic=9543' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled. 其他浏览器,如火狐就没问题。 在StackOverflow上得知的一种简单方式是设置 HTTP header X-XSS-Protection: X-XSS-Protection: 0 http://stackoverflow.com/questions/1547884/refused-to-execute-a-javascript-script-source-code-of-script-found-within-reque 这是最好的解决办法吗?
0
1
0
浏览量191
万码EZQPETUV

chrome开发者工具右侧css样式里用中划线划起来的属性代表什么?

"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816002682_3FoV.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816002682_3FoV.png) 图中chrome开发者工具右侧的css样式栏中一些css样式被中划线划起来或者变暗了,这个分别代表什么意思? 谢谢!
0
1
0
浏览量129
万码EZQPETUV

使用了animation后translate无效,chrome和firefox无效,IE可以

div的width不固定,使用translate(-50%,-50%)减去自身width一半达到居中,只使用translate可以居中,加上animation后translate无效,有没有什么解决方法?谢谢 div的样式如下: padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; position: absolute; top: 10%; left: 50%; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); /* IE 9 */ -moz-transform: translate(-50%,-50%); /* Firefox */ -webkit-transform: translate(-50%,-50%); /* Safari 和 Chrome */ -o-transform: translate(-50%,-50%); /* Opera */ -webkit-animation: fadeInDown 1s .2s ease both; -moz-animation: fadeInDown 1s .2s ease both;
0
1
0
浏览量189
万码EZQPETUV

如何用python取得Chrome Dev Tools Network面板中的Summary数据?

"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815703333_abVQ.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815703333_abVQ.png) 如图所示: Page Loading Time Test中,想用python取得 network中所有资源加载完的时间,特别是Finish的时间数据。 尝试过下面的取得的数据中并没有类似Finish的。 from selenium import webdriver import pprint driver=webdriver.Chrome(executable_path=r'C:\python\webdriver\chromedriver.exe') driver.get("https://www.china.com") performance_data = driver.execute_script("return window.performance.getEntries();") pprint.pprint(performance_data) 请问有什么办法或者使用哪个接口可以取到? 研究了一下文档,发现这个图能说的明白一些: "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815725080_tgeY.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815725080_tgeY.png) 目前修改为如下: navigationStart = driver.execute_script("return window.PerformanceTiming.navigationStart") responseEnd = driver.execute_script("return window.PerformanceTiming.responseEnd") loadEventEnd = driver.execute_script("return window.PerformanceTiming.loadEventEnd") backendPerformance = responseEnd - navigationStart frontendPerformance = loadEventEnd - responseEnd FinisheTime = backendPerformance + frontendPerformance 不知对否,请有经验者指正,谢谢!
0
1
0
浏览量126
万码EZQPETUV

windows系统上默认的代理服务器是不是IE浏览器设置的代理?

"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815573722_4wZs.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815573722_4wZs.png) chrome默认使用计算机的系统代理(上面的图写着) 然后点击更代理服务器设置 就弹出Internet属性这个窗口 是不是chrome默认使用的代理服务器是和IE浏览器相同的 火狐也默认使用的计算机的系统代理 是不是我改了IE的代理设置 也会更改chrome和firefox的代理服务器设置? 我用Fiddler来抓包 Fiddler会自动更改IE的代理为127.0.0.1:8888 但是我并没有更改chrome和firefox的代理 结果也能抓取chrome和firefox的包 这是不是能证明chrome和firefox的代理是和IE关联起来了 改IE的就改它俩的。。。。求大大解惑。。。。
0
1
0
浏览量130
万码EZQPETUV

如何使用 Chrome 调试器查看HTML元素被绑定的点击事件函数原形

页面中某个按钮被jquery绑定了单击事件,如何用 Chrome 调试器查看这个按钮点击之后执行的代码
0
1
0
浏览量175
万码EZQPETUV

浏览器批量下载打包成ZIP时,前端该如何优化下载显示?

浏览器批量下载打包成ZIP文件时,目前能想到的2种方案都无法令人满意,有没有大神提供一种比较友好的下载方案? 方案1、后端直接持续输出文件流,但是无法提供Response Header里的Content-Length属性的值,导致浏览器不能显示下载进度 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815186991_sDHz.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815186991_sDHz.png)方案2、后端先把各种文件打包成ZIP包保存到服务器上然后输出ZIP的文件流到前端,这种方式因为ZIP文件已经在服务器上了文件大小可以确定所以可以返回Response Header里的Content-Length属性的值,浏览器可以看到下载进度,但是在等待后端将文件打包成ZIP包的过程中,浏览器是一直在转圈的,并不会下载文件,知道后端打包好ZIP包输出文件流的时候才会开始下载文件 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815175201_jGEa.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815175201_jGEa.png) 后端打包好之后输出文件流才开始下载 "https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815197258_n8cx.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815197258_n8cx.png)
0
1
0
浏览量210
万码EZQPETUV

为何Android WebView 调用JS 扩选文本导致长按菜单不出现?

Android WebView 使用JS扩选的问题:我的需求是当用户选择webview的文本内容的时候,首次的长按的时候帮助用户选择整段,后续用户扩选的时候,自动帮用户选择整句。 我的思路是当原生这边创建系统菜单的时候(也就是用户开始选择之后),调用js,通过js的Selection API去做一个扩选。比如使用了下面的代码: function modify() { function forwardWord(selection) { var focusNode = selection.focusNode; var range = selection.getRangeAt(0); range.setEnd(range.endContainer, focusNode.textContent.length); selection.addRange(range); } let selection = window.getSelection(); selection.modify("extend", "backward", "paragraphboundary"); forwardWord(selection); console.log("selection.toString()", selection.toString()); return selection.toString(); } 调用了该Js之后,发现是能扩选成功的,但是系统的菜单就不再出现了,光标也不展示了。 其中,系统菜单是在长按的时候出现的那些例如:复制,全选,分享之类的系统自带的。 我是通过重写WebView的startActionMode(ActionMode.Callback callback)和startActionMode(ActionMode.Callback callback, int type)方法,创建自己的Callback代理,例如: fun proxyWebMenuCallback(callback: ActionMode.Callback, noticeH5: () -> Unit): ActionMode.Callback { return if (SdkVersion.maxThanM()) { WebViewMenuCallback2(callback, noticeH5) } else { WebViewMenuCallback(callback, noticeH5) } } @SuppressLint("NewApi") class WebViewMenuCallback2( private val callback: ActionMode.Callback, private val noticeH5: () -> Unit ) : ActionMode.Callback2() { override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean { return callback.onCreateActionMode(mode, menu).also { LogUtil.d("WebViewMenuCallback2", "onCreateActionMode:$it") } } override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean { noticeH5() return callback.onPrepareActionMode(mode, menu).also { LogUtil.d("WebViewMenuCallback2", "onPrepareActionMode:$it") } } override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean { return callback.onActionItemClicked(mode, item).also { LogUtil.d("WebViewMenuCallback2", "onActionItemClicked:$it") } } override fun onDestroyActionMode(mode: ActionMode?) { callback.onDestroyActionMode(mode).also { LogUtil.d("WebViewMenuCallback2", "onDestroyActionMode:$it") } } override fun onGetContentRect(mode: ActionMode?, view: View?, outRect: Rect?) { if (callback is ActionMode.Callback2) { callback.onGetContentRect(mode, view, outRect) } else { super.onGetContentRect(mode, view, outRect) } } } class WebViewMenuCallback( private val callback: ActionMode.Callback, private val noticeH5: () -> Unit ) : ActionMode.Callback { override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean { return callback.onCreateActionMode(mode, menu) } override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean { noticeH5() return callback.onPrepareActionMode(mode, menu) } override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean { return callback.onActionItemClicked(mode, item) } override fun onDestroyActionMode(mode: ActionMode?) { callback.onDestroyActionMode(mode) } } 我的想法是在创建菜单的监听中去执行JS代码进行扩选,但是无论我把noticeH5回调放在onPrepareActionMode还是onCreateActionMode中调用,还是noticeH5的实现是会通过postDelay去调用JS,结果都是扩选成功,但是菜单却被隐藏了,光标不见了。 然后我尝试在执行JS完成之后,例如: evaluateJavascript("javascript:" + js, value -> { postDelay(1000){ //performLongClick(); //showContextMenu(); } } ); 都不起效,无论是否一起调用。 后面我尝试在自定义菜单也不可以。 还尝试了自定义菜单,然后在执行完成JS之后,调用startActionMode方法,发现是会出现菜单的,但是菜单的位置出现不正确,而且光标也不见了,同时该方法还只能去设置执行一次,否则会陷入死循环,因为调用该方法之后,Callback里面的方法又开始执行了。 最后尝试了全部逻辑交由JS实现,结果就是js的菜单位置,扩选啥的都能直接做到,但是却不能自由选择了,光标没有了。 我的想法是这是否是Chrome的Bug,即在JS扩展选区的时候不能同步到原生端?因为扩选选区之后是会回调Callback的onGetContentRect方法的,我还在给官方提了bug,但是暂时也没有回应。When JavaScript expand the selection,WebView ContextMenu aoto dimiss 请问应该如何实现JS扩展选区,扩选之后菜单能保持在正确的位置。 PS: 小米浏览器有一个扩选的功能,而且扩选之后是可以正常展示菜单和光标的。或者有知道小米的是如何实现的吗?
0
1
0
浏览量135
万码EZQPETUV

项目中,关于JS执行的问题,方法内,element的loading无效?

写项目,vue+element, checkbox组件,当触发后在方法最顶端执行this.isLoading = true((显示遮罩)element的遮罩),方法内部执行逻辑运算,运算结束时this.isLoading = false(隐藏遮罩)。但怪异的现象是遮罩并不会出现(for循环过程中,或者结束后,this.isLoading为true和false先后一起执行了)。 为什么会使这样?什么原理?项目中如何优雅的解决?"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724814428408_PyeD.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724814428408_PyeD.png)!
0
1
0
浏览量121
万码EZQPETUV

Chrome Dev Tools 里,如何通过 Remote Devices 面板,调试 Android 微信里打开的页面?

我以前的手机刷了 LineageOS,安卓版本是 Android 8.0 ,WeChat 版本 6.6.7 ,是 Google Play 里下载的。在以前很长一段时间里,我靠 Chrome Dev Tools 里的 Remote Devices 功能调试过非常多手机微信上的项目,简直是神器。 然后最近换了新手机,刷了 Mokee 和 Android 8.1 ,之后发现我的新手机,现在不能用 Chrome Dev Tools 里的 Remote Devices 里调试微信的页面了。WeChat 版本 6.6.7 ,还是 Google Play 里下载的。 现在我电脑 Chrome Dev Tools 里的 Remote Devices 连接手机没问题,也有弹窗要求 USB 调试授权,手机里通过移动端 Chrome 打开的页面,也是可以调试的。就是在微信里不可以。在微信里打开网页,Windows 电脑里的 Remote Devices 面板显示 No browsers detected 。 我上网搜过很多,大多都是说什么 X5 内核的事,可我现在这个是 Android 原生 Webview,根本不起效,微信访问 debugx5.qq.com 也显示我不是在用 X5 内核。 想不明白,我怀疑是新版本的微信,屏蔽掉了代码里 WebView 调试权限或禁用了 Remote Devices 相关的接口?顺带提一下,微信那个开发者工具真的是烂到家了。这个功能对我蛮重要的,毕竟很多线上的环境很难去加载 Weinre , 我也不知道前端远程调试移动设备还有什么更好的方法,谷歌自家的调试方法应该是最好的了吧,有的话希望能推荐一下? 所以请问微信要怎样才能在 Remote Devices 里调试页面呢,我也不知道新手机是什么原因还是微信做了什么才导致现在不行。问题描述可能有些长,希望有踩过这个坑的朋友能给点解决思路,求助。
0
1
0
浏览量176

履历

中国民航大学
本科
2022.09-2026.06