1 、在终端里直接 curl 不加任何参数是可以获取到的
2 、Python requests 库获取不到
3 、PHP curl 带上从 chrome 复制的全套 header 也获取不到。
1 、终端里不带参数为什么能请求到
2 、用代码的方式不管怎样都请求不到,即使带了 chrome 能正常访问的全套 header
import requests
import os
os.system('curl https://www.douban.com/doubanapp/h5/book/2567698/desc')
url = 'https://www.douban.com/doubanapp/h5/book/2567698/desc'
strhtml = requests.get(url)
print(strhtml.text)
|  |      1manzhiyong      2020-12-22 16:28:32 +08:00  1 不能老实的用 selenium 吗 | 
|  |      2fiveelementgid      2020-12-22 16:32:05 +08:00 via Android  1 首先,终端不带参数还是还是有默认 Header 头的 你用 curl -v 查查看 | 
|  |      3maocat      2020-12-22 16:33:31 +08:00  1 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'} requests.get(url,headers=headers) <Response [200]> requests.get(url) # <Response [418]> | 
|  |      4songjiaxin2008      2020-12-22 16:34:48 +08:00  1 curl 默认就是 curl 的 ua 哦 | 
|  |      5songjiaxin2008      2020-12-22 16:35:20 +08:00 @maocat #3  正解,requests 包也有自己的默认 UA | 
|  |      6JetMac      2020-12-22 16:41:27 +08:00 418 I'm a teapot | 
|  |      7wjfz OP @maocat 尴尬,用 PHP 的 curl 试了下不行就没用 Python 试着加 header 了。看来还是 PHP 的 curl 库不对劲。 | 
|  |      8HFX3389      2020-12-22 16:44:15 +08:00  1 requests 包默认的 UA 是:python-requests/{package version} | 
|  |      9wjfz OP @fiveelementgid  @maocat @songjiaxin2008 @HFX3389 请教一下,那我用 PHP 带了全套 header,包含 ua 和 cookie,依然是请求不到的,这有可能是什么原因 | 
|  |      10wjfz OP  1 原因找到了,太愚蠢了,PHP 的 curl 是单独设置 ua 的,没在 header 数组里。 |