Crossin的编程教室
标题:
求助: 使用无头浏览器载入的仍然是js没有执行空白页面?
[打印本页]
作者:
anyone
时间:
2022-6-11 23:17
标题:
求助: 使用无头浏览器载入的仍然是js没有执行空白页面?
本帖最后由 anyone 于 2022-6-11 23:18 编辑
想要下载某个网站中的信息, 其页面中都是js, 所以我尝试使用无头浏览器库: pyppeteer
一切都是初学, 只是照猫画虎得到下面的代码:
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
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')
await page.goto('https://www.gousto.co.uk/cookbook/chicken-recipes/nutty-bang-bang-chicken-rice-salad', waitUntil='networkidle0')
await page.screenshot({'path': 'c:/desktop/1654930971.png'})
await browser.close()
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