有对付anti-robot的高手吗?

l
longtian
楼主 (未名空间)

想爬https://publicholidays.us/school-holidays/里每个州每个学区的放假信息。这个网站用了3rd party的anti-robot.我用了python下各种工具,只要一读这个网站的页面,立刻被识别出来是自动工具。

哪位高手能试试,找出他是怎么判断我是自动工具的。你用自动工具的链接会被拒绝,但是你的ip不会被block,还能访问,所以不用担心立刻被blacklist

h
hardpack
2 楼

码农灯塔说有专业下网页的service,试试呗。
https://m.youtube.com/watch?v=L9pFcjIvZRs

z
zzxx53
3 楼

Change user agent header

================================
:
:想爬https://publicholidays.us/school-holidays/里每个州每个学区的放假信息。
这个网站用了3rd party的anti-robot.我用了python下各种工具,只要一读这个网站的页面,立刻被识别出来是自动工具。

l
longtian
4 楼

这是最基本的方法,用了,没用。

这个网站的防robot方法是检测很多变量,工具生成的变量会不一样。还有说firefox,
chrome的webdriver在后来的版本键入了某些变量,我卸载了chrome 77,安装了73版,也不行。

【 在 zzxx53 (zzxx53) 的大作中提到: 】
: Change user agent header
: ================================
: :
: :想爬https://publicholidays.us/school-holidays/里每个州每个学区的放假信息。
: 这个网站用了3rd party的anti-robot.我用了python下各种工具,只要一读这个网站的
: 页面,立刻被识别出来是自动工具。

l
longtian
5 楼

我去试试
【 在 hardpack (hardpack) 的大作中提到: 】
: 码农灯塔说有专业下网页的service,试试呗。
: https://m.youtube.com/watch?v=L9pFcjIvZRs


w
walkrandom
6 楼

看了一下,像个很穷的网站。
请人写了点Javascript防爬。
你跟他直接说买数据好了。
他们赚点钱也不容易
l
longtian
7 楼

3rd party的service不便宜,比如著名的distil networks

直接买更贵。我们cheap所以要爬

【 在 walkrandom (walkrandom) 的大作中提到: 】
: 看了一下,像个很穷的网站。
: 请人写了点Javascript防爬。
: 你跟他直接说买数据好了。
: 他们赚点钱也不容易

r
repast
8 楼

实在不行用 selenium 呗

【 在 longtian (有人的地方,就有江湖) 的大作中提到: 】
: 3rd party的service不便宜,比如著名的distil networks
: 直接买更贵。我们cheap所以要爬

h
hamsterdam4
9 楼

我试了下几种办法

唯一好用的就是selenium

const val USER_AGENT = "Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/
20100101 Firefox/64.0"

val options = ChromeOptions()
options.addArguments("user-agent=$USER_AGENT")
val driver = ChromeDriver(options)
driver.get(BASE_URL)
val html = driver.pageSource
println(html)

【 在 repast (xebec) 的大作中提到: 】
: 实在不行用 selenium 呗

h
hamsterdam4
10 楼

悲剧,没试几次被屏蔽了
【 在 hamsterdam4 (Tears in rain) 的大作中提到: 】
: 我试了下几种办法
: 唯一好用的就是selenium
: const val USER_AGENT = "Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/
: 20100101 Firefox/64.0"
: val options = ChromeOptions()
: options.addArguments("user-agent=$USER_AGENT")
: val driver = ChromeDriver(options)
: driver.get(BASE_URL)
: val html = driver.pageSource
: println(html)

a
adler
11 楼

selenium能被检测出来
h
hamsterdam4
12 楼

我用selenium试的时候刚开始可以,但是多几页就被检测到了

这个时候换user-agent又能看几页

我想可不可以网上找个user-agent的list,然后每次从里面选一个出来用,用完拉到那种。
【 在 adler (鼎) 的大作中提到: 】
: selenium能被检测出来

r
repast
13 楼

这种可能是 usage-based throttle? 你加个平均3秒的负指数分布的延迟,也会被查出来?
它怎么查出来 是 selenium 的?

【 在 hamsterdam4 (Tears in rain) 的大作中提到: 】
: 我用selenium试的时候刚开始可以,但是多几页就被检测到了
: 这个时候换user-agent又能看几页
: 我想可不可以网上找个user-agent的list,然后每次从里面选一个出来用,用完拉到那
: 种。

l
longtian
14 楼

人用的时候不会,你很快的点一大推都没有问题

但是你只要用自动工具,很快就会被识别出来

selenium的webdriver里边有写特殊字段,我用hex editor改了一些,但是还是不work

【 在 repast (xebec) 的大作中提到: 】
: 这种可能是 usage-based throttle? 你加个平均3秒的负指数分布的延迟,也会被查出
: 来?
: 它怎么查出来 是 selenium 的?

h
hamsterdam4
15 楼

我查了一下selenium好像是cdn那边会用js检测window.navigator.webdriver这样的key

我试了拿很多user-agent的办法,也没成功
【 在 repast (xebec) 的大作中提到: 】
: 这种可能是 usage-based throttle? 你加个平均3秒的负指数分布的延迟,也会被查出
: 来?
: 它怎么查出来 是 selenium 的?

f
funstock
16 楼

有人能帮我看看这个网站如何对付么?
https://seekingalpha.com/earnings/earnings-call-transcripts

想下载所有公司的业绩发布会议记录。
l
lsunspot
17 楼

自己写个http client呗

l
longtian
18 楼

更容易识别

【 在 lsunspot (小手) 的大作中提到: 】
: 自己写个http client呗

z
zuzi
19 楼

IP address?
【 在 longtian (有人的地方,就有江湖) 的大作中提到: 】
: 想爬https://publicholidays.us/school-holidays/里每个州每个学区的放假信息。这
: 个网站用了3rd party的anti-robot.我用了python下各种工具,只要一读这个网站的页
: 面,立刻被识别出来是自动工具。
: 哪位高手能试试,找出他是怎么判断我是自动工具的。你用自动工具的链接会被拒绝,
: 但是你的ip不会被block,还能访问,所以不用担心立刻被blacklist