Crossin的编程教室

标题: 求助: 使用无头浏览器载入的仍然是js没有执行空白页面? [打印本页]

作者: anyone    时间: 2022-6-11 23:17
标题: 求助: 使用无头浏览器载入的仍然是js没有执行空白页面?
本帖最后由 anyone 于 2022-6-11 23:18 编辑

想要下载某个网站中的信息, 其页面中都是js, 所以我尝试使用无头浏览器库: pyppeteer

一切都是初学, 只是照猫画虎得到下面的代码:
  1. import asyncio
  2. from pyppeteer import launch

  3. async def main():

  4.     browser = await launch()
  5.     page = await browser.newPage()
  6.     await page.setUserAgent('Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')
  7.     await page.goto('https://www.gousto.co.uk/cookbook/chicken-recipes/nutty-bang-bang-chicken-rice-salad', waitUntil='networkidle0')
  8.     await page.screenshot({'path': 'c:/desktop/1654930971.png'})
  9.     await browser.close()

  10. asyncio.get_event_loop().run_until_complete(main())
复制代码
得到的是一个空白页面.
但是换成其他的需要js调用的网址, 就能显示其内容, 比如: "https://chemdrawdirect.perkinelmer.cloud/js/sample/index.html"

我猜想gousto这个网站可能做了一些防止无头浏览器的检测.

我尝试更改了user agent,
也更改了载入判断: waitUntil

但是仍然只能得到空白页面.

想请高手帮我看看, 他使用了什么方法检测出我使用无头浏览器查看的?


非常感谢.

作者: crossin先生    时间: 2022-6-12 00:07
这个不好确定,但给你一个参考:
https://mp.weixin.qq.com/s/5_Ip3c7jcjWHcawehh-1Lw
你以为的万能爬虫方法,其实一行代码就能识别!


作者: anyone    时间: 2022-6-12 17:36
感谢回复, 可是你给我的参考让我更加困惑了.

文章中的结尾: "那么如何绕过这个event.isTrusted呢?其实很简单,你使用Selenium/Puppeteer,天然就能绕过它。"

而我就是使用的是puppeteer的python版本: pyppeteer, 应该也能避免这个问题对吗?

不知您可否费心帮我看看, 或者给我一些思路也行, 我也好按图索骥, 有点儿方向.

现在我是没有思路, 不知道该检查哪里.

万分感谢.
作者: anyone    时间: 2022-6-12 17:41
另外我想到的一个思路, 不知道是否具有可行性:

既然无头浏览器有诸多被检测到的可能, 那么我可否使用真正的浏览器, 用损失效率换取一些万能的方法.
达到我可以用python萃取其中内容即可.

有时候并不是大量的取数据, 也许就是10来页的文章什么的,
大动干戈的研究网站防爬有点儿得不偿失.

如果能找到一个比挨个下载网页, 然后拷贝粘贴快一些的方式就好了.

不知道 先生 有什么建议?

感谢.
作者: crossin先生    时间: 2022-6-12 22:45
anyone 发表于 2022-6-12 17:41
另外我想到的一个思路, 不知道是否具有可行性:

既然无头浏览器有诸多被检测到的可能, 那么我可否使用真正 ...

可以尝试用 selenium,然后不要用无头模式(默认就不是),它会打开chrome,然后你可以观察加载的过程

但这个方法理论上还是可能会被检测,如果试下来还是不行,还有个极端的办法:就是通过鼠标模拟操作,直接去操作真实的浏览器。(比如 PyAutoGUI)
这种情况,除非对方网站对用户行为进行分析检测,不然是无法区分的
作者: anyone    时间: 2022-6-24 00:13
感谢先生的回复,
最近忙还未尝试先生的建议
我打算稍后尝试一下鼠标模拟.




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5