#browser #javascript #js #io #v8

browserjs

用于在类似于浏览器的不模拟的自驱动上下文中评估JavaScript(v8)的库

1 个不稳定版本

0.0.0 2023年8月19日

#29#v8

MIT/Apache

7KB

Crates.io Docs.rs MIT License Apache 2.0 License Build Status

browserjs 是早期工作,请自行承担风险使用。

并非所有存在的内容都有文档,也并非所有有文档的内容都已实现。

这是一个实验性项目,目前尚未定义或承诺最小Rust版本(MSRV)。一旦这个项目在生产环境中可用(请自行承担风险),我们将定义一个。

愿望清单

梦想API

from browserjs import Browser

browser = Browser(('chrome', '115'))

browser.set_dom("""<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello World! Site Title</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>""")

page_title = browser.eval_js("""document.title""")
assert(page_title == "Hello World! Site Title")

page_title = browser.eval_js("""document.write("foo"), document.title""")
assert(page_title == "")

ua = browser.eval_js("""navigator.userAgent""")
assert(ua == 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36')

并不是真正制作一个“虚假”的浏览器。因此,如果你有一个包含JavaScript的DOM,它将不会自动加载,除非你让它评估嵌入的js。

某些功能也只有在您用自己逻辑配置时才启用。例如,只有当您指定其逻辑时,才支持XHR请求,这些请求默认会被阻止。

待办事项

  • 集成V8引擎
  • 用它制作一个小型的Rust Hello Eval库,该库已经使用Rust功能
  • 制作一个Python包装器
    • 不确定PyO3在这里是否能很好地工作,因为与V8引擎的本地绑定... 我们拭目以待

贡献

🎈 感谢您的帮助,提高这个项目!我们非常高兴有您的加入!我们有一个[贡献指南][contributing],帮助您参与 browserjs 项目。

如果您想为这个项目做出贡献,但还不知道如何用Rust编程,您可以从学习Rust开始,目标是尽快通过使用 "Rust 101 学习指南" 作为您的学习伴侣来为 browserjs 做出贡献。Glen 也可以作为导师或教师被雇佣,以提供付费的一对一课程和其他类似咨询服务。您可以在 https://www.glendc.com/ 找到他的联系信息。

许可证

本项目采用双重许可,即 [MIT许可证][mit-license] 和 [Apache 2.0许可证][apache-license]。

贡献

除非您明确声明,否则您提交的任何有意包含在 browserjs 中的贡献,均应作为 [MIT][mit-license] 和 [Apache 2.0][apache-license] 许可,不附加任何其他条款或条件。

赞助商

browserjs 是一种 完全免费、开源的软件,开发和维护它需要大量的努力和时间。

通过成为 赞助商 来支持此项目。

赞助商帮助我们继续维护和改进 browserjs 以及其他自由和开源(FOSS)技术。这也帮助我们创建了如 https://github.com/plabayo/learn-rust-101 等教育内容,以及其他开源库,如 https://github.com/plabayo/tower-async

赞助商将获得福利,并根据您常规的贡献程度,您还可以依赖我们提供支持和咨询。

如果您计划将 browserjs 用于商业转售或打包活动,您需要成为足够高等级的赞助商,以便尽管它具有商业许可证(BSL),您仍可为此目的使用它。

常见问题解答(FAQ)

Q:这个库不起作用!

这是一个实验性项目,使用风险自担。目前,这完全是出于我们自己的目的,如果您用它有效,那很好。

话虽如此,您可以通过 GitHub 或电子邮件联系我们,看看它如何对您有益,或者您如何能够 贡献

无运行时依赖