如何控制已打开的浏览器,从而实现 selenium 伪装

2023-12-25 13:57:06 +08:00
 mondbyte

Selenium+Python 爬取网站公开数据,遇到网站过滤机制,无法打开。 尝试了网上多种伪装 selenium 方法,均未实现。 https://bot.sannysoft.com/ 全绿也不行,查了资料说是网站判断是 webdriver 的途径和方法很多。

现在大致的想法是:能否控制已手动打开的浏览器,定位到对应的标签页,来实现绕过机器人监测。 或者有其他办法的也可以。

目标网站: https://www.nmpa.gov.cn/datasearch/home-index.html#category=ylqx

备注:公开数据,非商业用途

4330 次点击
所在节点    Python
28 条回复
wind1986
2023-12-25 14:41:49 +08:00
Puppeteer 能用本机浏览器
hubaq
2023-12-25 14:47:20 +08:00
药监局用的是定制版的瑞数
forQ
2023-12-25 14:49:31 +08:00
mondbyte
2023-12-25 15:08:43 +08:00
@forQ 感谢方案!但还是没通过检测,打开依然 400
peanutBark
2023-12-25 16:05:05 +08:00
能否控制已手动打开的浏览器,定位到对应的标签页 -------能,你搜索一下 chrome.exe --remote-debugging-port=9222
yaleyu
2023-12-25 16:06:59 +08:00
反爬技术日新月异,Selenium 越来越力不从心,试试 drissionpage, https://gitee.com/g1879/DrissionPage
Belmode
2023-12-25 16:47:19 +08:00
@yaleyu 请问这个可以通过 headless 方式使用吗
elevioux
2023-12-25 16:50:33 +08:00
写个浏览器扩展?

虽然不能做到控制浏览器的程度
chen2016
2023-12-25 17:44:30 +08:00
@yaleyu 这个毕竟是个人作品,会出现一些莫名其妙的 bug ,刚开始用的时候确实很惊艳,但是自从几个项目从 selenium 改到 DrissionPage 都出现了莫名的 bug 之后,我就彻底不敢乱用这个自动化框架了
xyz8899
2023-12-25 18:05:06 +08:00
瑞数 5 代的 cookie 值也有很多种,目前 yao 监局是 neCYtZEjo8GmO ,neCYtZEjo8GmP
jianchang512
2023-12-25 18:34:02 +08:00
直接开启 chrome 开发模型,写个小扩展控制页面抓取和请求过滤,似乎是更可行的方案,可以配合后端发送数据接收指令。
除此外 楼上说的 drissionpage, https://gitee.com/g1879/DrissionPage 也可以试试。
tudou527
2023-12-25 19:06:52 +08:00
apify.com 能用么?
Laimf
2023-12-25 19:13:14 +08:00
先通过 selenium 把浏览器拉起来,进入目标网站,如果没问题,说明 selenium 没被限制。那么就可以在代码里面加等待时间,进行判断匹配到了就运行逻辑。
zeusho871
2023-12-25 20:41:40 +08:00
指纹浏览器
NoOneNoBody
2023-12-25 21:34:19 +08:00
问题应该不在浏览器,在其他地方,例如频率和踩到蜜罐了
我这里就随手拿个 pyqt6 写的 webview 都能打开正常浏览几页
NoOneNoBody
2023-12-25 21:37:51 +08:00
呃,背景有 canvas 动图,可能里面有指纹检测
llbqwhtxi
2023-12-25 22:04:31 +08:00
chrome.exe --remote-debugging-port=**** --user-data-dir="C:\********" 5 楼说的没错
cdlnls
2023-12-25 22:22:09 +08:00
太巧了,正好最近在写一个工具,就是做这个,还没发布。

主要是利用 chrome 扩展的 API 去控制浏览器,支持新建 tab 、刷新、前进后退等等,还可以给网页注入 JS/CSS 等等。

chrome 插件启动,然后设置服务端的地址后,会使用 websocket 去连接服务端。在服务端可以接收 HTTP 请求,然后通过调用 http 请求,就可以实时控制浏览器做一些操作。

比如
curl http://host/_cat/tabs
curl http://host/tabs/open?url=https://xxx.com
curl http://host/tabs/_reload?sid=xxx

理论上访问网页和自己用浏览器访问网页是一模一样的,据我所知应该是没有什么特征的。
cdlnls
2023-12-25 22:25:49 +08:00
感觉你可以试试上面说的 remote-debugging-port ,这个看上去好像没问题。
yaleyu
2023-12-26 09:26:59 +08:00
@chen2016 嗯,主要是用这个绕开 CF 的人机检查,有的网站 Selenium 实在绕不过,用了 undected-chromdriver 都绕不过。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX