1
jybox 2019-02-02 16:14:39 +08:00
「照葫芦画瓢把相应关键字段复制到自己的代码」这就是在走「捷径」嘛,你不走捷径就上 chrome-headless 呀。
|
2
gabon 2019-02-02 16:18:48 +08:00 via Android
HTTP 协议
|
3
smyle OP @jybox f12 应付下简单的一次性操作倒是 OK,但有时复杂的网页光是看 f12 发送的那一大堆东西都头大,我是想如果能仿照浏览器的解析、计算、发送过程来做的话,有时应该会比观察 f12 顺手
|
4
dorothyREN 2019-02-02 16:19:43 +08:00
webdriver 多好。
|
5
gabon 2019-02-02 16:20:16 +08:00 via Android
抓包最准
|
6
flight2006 2019-02-02 16:26:10 +08:00 1
爬虫是啥,爬虫是模拟别人网站的前端请求,你在不知道人后端 api 的情况下肯定只能 F12 看人家前端发的真实请求长啥样才能模拟?
|
7
smyle OP 不知道怎么在顶层进行补充回复……
插楼补充下吧: 确实如一些筒子所说,有更好的工具 webdriver、selenium 等 不过这个提问的目的倒不是想解决实际问题,我主要就是想了解浏览器是怎么做的,可以理解为纯粹是好奇而已 |
8
ThirdFlame 2019-02-02 16:39:48 +08:00
读下 html 啊 ,了解下 form
|
9
smyle OP 我认为浏览器本质上和爬虫没什么区别,都是数据收发、解析、存储罢了,只不过浏览器需要集合很多工具一起工作
@flight2006 至于我的问题,你可以理解为,我就是一个浏览器,我怎么根据服务器返回的数据,得知下一步发送什么内容? 例如:使用者在网页上填了用户名 abc,OK 了,发送。那我发送表达的时候,用户名的 key 名应该写什么?是 user、username、user_name、name 还是 id ?这个网站也许叫 user,另一个网站也许叫 username 这显然是浏览器通过解析网页内容得到的啊 PS:就用户名、密码而言,我看了下似乎在 html 用户名对应属性里,有一个字段似乎就是要发送的 key。但我不确定是不是 100%都这样 |
10
AX5N 2019-02-02 16:42:03 +08:00
楼主的想问的就是如何智能地模拟浏览器的行为,但实际上你去学一下前端就知道其实没有什么智能的办法来模拟。
比如 username 还是 user_name 这个问题,实际上是人家网站只给你一个 username = 的选项让你去填,并且已经写死当你点击提交的时候发送的是 username 这个变量,所以浏览器根本就不需要知道到底是 username 还是 user_name。因为你就只有一种选择,就像这段代码一样: a =; b = a+5; 现在请你去填 a 的内容 另一种情况则是这样的:有的网站是当你点击提交后,就会调用一个函数,然后这个函数可能会去再调用别的函数来生成一些必要信息,也可能这些信息是在加载网页时候就已经调用函数产生的全局变量,函数直接获取就行。这你咋猜,倒头来还是要手动去找最初调用的那个函数。 |
12
smyle OP @AX5N 比较接近这个意思了
你的意思是说: 所有的内容包括 username 等,某些网站也许不写在 html 里(或者 html 里写一个助记的名字,但最终发送的完全不一样),而是鼠标点击提交后,浏览器后台计算、生成再发送吗? |
13
ThirdFlame 2019-02-02 16:52:56 +08:00
@smyle 除了 html 还有 javascript
|
15
crab 2019-02-02 16:58:33 +08:00
有不少 cookies 是 AD 类不需要,有登陆的看响应的 cookies 就可以了。
|
16
smyle OP @AX5N 还想确认一点:是不是所有的 js 调用,追根溯源都来自 html (/css?) 里的某个关键部分?比如点击按钮的 html 属性里有一个调用某 js 函数的 method ——也许不是这么做,我就是猜一个可能的例子
还是说连这些通知浏览器发起调用的入口都是完全在后台,前端看不见的? |
18
smyle OP @crab 主要是我发现登录同一个页面后,第一个请求开始可能会带 cookies,但后续自动下载图片等请求可能就是没有 cookie 的了,但就是不清楚浏览器根据什么来判断某个请求要不要带 cookie
当然,这只是不明白的地方之一,看样子还是前端知识太匮乏了 |
19
gamexg 2019-02-02 17:27:44 +08:00
@smyle #18 cookie 规则 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies
你说的那个情况我怀疑图片是另一个域名,所以不发送 cookie。 |
20
lhx2008 2019-02-02 17:37:25 +08:00 via Android
其实就是效率问题,浏览器一秒爬两页就不错了,自己发 HTTP 包一秒至少爬十页。至于为什么效率慢,因为渲染要时间。就像你玩游戏,你如果能不开游戏直接发包玩,就可以代练几十几百个玩家,但是你开客户端玩最多开 10 个。
那么,有没有智能的爬虫呢?也是有的,比如什么火车浏览器,但是说到底还是很难模拟所有情况,还有要高速爬取的话,还要解决代理池,数据清洗等等。所以事情远没有那么简单 |
21
Hieast 2019-02-03 12:14:58 +08:00 via Android
楼主需要去找一两篇讲浏览器架构的文章读一读
|
22
megachweng 2019-02-03 16:13:07 +08:00 via iPhone
典型的想的太多,学的太少。必经阶段加油
|