爬一个网站时,发现如果从来没打开过的链接使用request.get得到的内容和浏览器打开的不一样,研究了下是因为做了js跳转反爬。但是为什么浏览器打开了一次之后就能正常get到需要的内容呢?
3条回答 默认 最新
- qq_41870875 2021-06-23 13:15关注
我并没有用过python,有用过php的curl,也有用过c语言的curl. 推荐学习c语言的curl(并不用写c代码 ,只是通过c语言的curl 学习抓取网页所需用到的参数). 相关文章可以参考下 文章地址:https://www.cnblogs.com/meteoric_cry/p/3994893.html 或者自行搜索CURLcode 定义 相关. 你的问题解决方案是 先通过浏览器获取到网址对应的 curl 在将这些参数添加到python-curl中(即模拟浏览器访问), 每一个网站下多个地址可能某些参数是不一样的, 但他们只要策略一样 就可以手动一次 全站使用. 下面是 用谷歌浏览器获得的某网址的curl 举例csdn为例 例如user-agent 即浏览器标识 , curl功能有很多 也可以抓取ssl页面, 也可以cookie 用户登录等等 , 一些服务器程序也是利用这些头部信息进行来源分析,这些都在CURLcode 定义中. curl "https://ask.csdn.net/questions/7452100?answer=53434076" ^ -H "authority: ask.csdn.net" ^ -H "cache-control: max-age=0" ^ -H "sec-ch-ua: ^\^" Not;A Brand^\^";v=^\^"99^\^", ^\^"Google Chrome^\^";v=^\^"91^\^", ^\^"Chromium^\^";v=^\^"91^\^"" ^ -H "sec-ch-ua-mobile: ?0" ^ -H "upgrade-insecure-requests: 1" ^ -H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36" ^ -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" ^ -H "sec-fetch-site: none" ^ -H "sec-fetch-mode: navigate" ^ -H "sec-fetch-user: ?1" ^ -H "sec-fetch-dest: document" ^ -H "accept-language: zh-CN,zh;q=0.9" ^ -H "cookie: "**************" ^ --compressed
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥100 关于加载卡的问题有能知道这个要怎么处理吗?
- ¥100 rtmpose姿态评估
- ¥15 java 通过反射找路径下的类,打包后就找不到
- ¥15 通联支付网上收银统一下单接口
- ¥15 angular有偿编写,
- ¥15 centos7系统下abinit安装时make出错
- ¥15 hbuildex运行微信小程序报错
- ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
- ¥15 wpf datagrid如何实现多层表头
- ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。