Golang 模拟页面访问:不触发冲浪 Javascript
Golang Simulate Page Visit : Surf Not Triggering Javascript
我有一个 Go 程序,它只是模拟使用 Surf (gopkg.in/headzoo/surf.v1
) 访问的本地网页,但似乎页面上的 Javascript 没有被执行。只是为了测试我让网页对服务器上的另一个路由进行 ajax 调用,该路由只会在服务器端输出响应。
<html>
<head>
<script src="jquery.min.js"></script>
</head>
<body>
<script>
$.ajax ({
url : "/test",
type : "GET",
success : function(res) {},
error : function(res) {}
});
</script>
</body>
</html>
然后 Go Surf 功能访问该页面,此路由还在服务器端输出响应,该响应已显示,但来自 ajax 请求的响应未显示。
func simulateVisit() {
bow := surf.NewBrowser()
bow.SetUserAgent("LocalCrawler/1.0")
err := bow.Open("http://127.0.0.1/page")
if err != nil { fmt.Println(err) }
}
为了确保它只发生在 Surf 中,我还使用 Chromedp (github.com/chromedp/chromedp
) 对其进行了测试,它给出了正确的两种响应。
这是 Surf 的限制还是我在做什么傻事?
Surf 不包含 JS 运行时。它确实支持下载 scripts,但它永远不会真正执行它们。
我有一个 Go 程序,它只是模拟使用 Surf (gopkg.in/headzoo/surf.v1
) 访问的本地网页,但似乎页面上的 Javascript 没有被执行。只是为了测试我让网页对服务器上的另一个路由进行 ajax 调用,该路由只会在服务器端输出响应。
<html>
<head>
<script src="jquery.min.js"></script>
</head>
<body>
<script>
$.ajax ({
url : "/test",
type : "GET",
success : function(res) {},
error : function(res) {}
});
</script>
</body>
</html>
然后 Go Surf 功能访问该页面,此路由还在服务器端输出响应,该响应已显示,但来自 ajax 请求的响应未显示。
func simulateVisit() {
bow := surf.NewBrowser()
bow.SetUserAgent("LocalCrawler/1.0")
err := bow.Open("http://127.0.0.1/page")
if err != nil { fmt.Println(err) }
}
为了确保它只发生在 Surf 中,我还使用 Chromedp (github.com/chromedp/chromedp
) 对其进行了测试,它给出了正确的两种响应。
这是 Surf 的限制还是我在做什么傻事?
Surf 不包含 JS 运行时。它确实支持下载 scripts,但它永远不会真正执行它们。