尝试的网站是 https://stocksnap.io/(这是个免费图片网站,可能对于大佬来说很简单,勿喷)
思路
1 获取json的url(直接百度,吸取了前人的经验)见图1,但是这个教程里面下载的不是高清图片所以我没有按照这个方案来
2 通过json分析出每个图片主页面的url,如图2
3 进入图片主页面,分析点击free download按钮后执行操作,用python模仿这个操作实现下载,如图2
问题了出现在第三步:
1) 经过分析后找到点击free download后就是发送了个post请求,post请求的data内容我也在浏览器的元素里面找到了如图3(顺便一提,这个需要加cookie,我就直接从浏览器复制的,好像过一段时间需要更新一下,而且不同电脑的cookie还不通用),2 )尝试直接将post请求里面的data复制过来,使用python通过post请求能够成功下载到图片响应状态2003)然后我用python下载到了图2页面的全部代码,拼接出data(前面分析得到的结果),然后下载发现403,4)然后我把拼接出来的data直接放到之前写的用来下载的post请求代码里面反馈也是403,我就觉得是自己data找错了,检查了一下发现代码没错,5)然后我把这个网址直接放到浏览器里面去打开,打开之后发现居然内容和python获取的页面源码不一样(主要是value不一样,但是这个值特别重要)见图5,浏览器获得的value可以用python写的post请求下载,但是python获取的value不行请大佬指教。
热议
2楼 wjj 昨天23:37
盲猜是因为_csrf参数校验没通过
3楼 千牛 昨天23:45
referer和UA呢
尽量保证header头一致
4楼 小黑啊 昨天23:47
千牛 发表于 2023-3-28 23:45
referer和UA呢
尽量保证header头一致
referer没加,只加了UA
5楼 小黑啊 昨天23:48
wjj 发表于 2023-3-28 23:37
盲猜是因为_csrf参数校验没通过
什么意思,没明白啊,那要怎么才能校验通过
6楼 3xI 昨天23:51
我这代码太烂,编辑了
7楼 yy10112001 昨天23:54
csrf每次都會變。
你沒有獲取最新的csrf吧。
8楼 小黑啊 10小时前
3xI 发表于 2023-3-28 23:51
我这代码太烂,编辑了
我已经复制了,嘻嘻,不过我试了一下,只下载了两个图片,不知道是什么原因
9楼 小黑啊 10小时前
yy10112001 发表于 2023-3-28 23:54
csrf每次都會變。
你沒有獲取最新的csrf吧。
是,确实每次都变,就连浏览器刷新前后两次的都不一样,用python获取每次也都不一样,但是用python获取的作为data就是不能下载,直接从浏览器那里获得的值放到data就能够下载,不清楚原因,不知道会不会是cookie有影响
10楼 3xI 10小时前
我已经复制了,嘻嘻,不过我试了一下,只下载了两个图片,不知道是什么原因 ...
for循环那里有个切片。。
12楼 acpp 10小时前
测试了下,没有反爬虫检测的。
理论上只要取一次cookies得到csrf和一次页面csrf,后面只变动photoId参数值就可以一直下载了。
13楼 iuxjo 10小时前
14楼 wjj 10小时前
什么意思,没明白啊,那要怎么才能校验通过
postman试了下,应该不是_csrf参数的问题,更换photoId随便下,header中要有合法cookie
15楼 小黑啊 10小时前
acpp 发表于 2023-3-29 00:12
测试了下,没有反爬虫检测的。
理论上只要取一次cookies得到csrf和一次页面csrf,后面只变动photoId参数值 ...
那说明还是我技术不行啊,明天再试,不成功誓不罢休
16楼 小黑啊 10小时前
wjj 发表于 2023-3-29 00:13
postman试了下,应该不是_csrf参数的问题,更换photoId随便下
检查header吧,保持一致 ...
诶,好像是啊,好像两次请求的UA还真还真不是一样的,我明天再看看,之前没注意这么多啊
17楼 iuxjo 10小时前
18楼 小黑啊 10小时前
iuxjo 发表于 2023-3-29 00:17
当我没说
不是,这个下载下来的图片和网页上点击free download下载的图片大小不一样大,我觉得不高清,还有我主要吧就是想练练手,所以怎么复杂怎么好怎么来
19楼 acpp 10小时前
那说明还是我技术不行啊,明天再试,不成功誓不罢休
返回403,要么cookies问题,要么页面的csrf提取问题。这2个输出看下就知道了。
20楼 小黑啊 10小时前
acpp 发表于 2023-3-29 00:12
测试了下,没有反爬虫检测的。
理论上只要取一次cookies得到csrf和一次页面csrf,后面只变动photoId参数值 ...
问题找到了,就是headers问题,第一次使用headers时没有加cookie,第二次不加cookie就403,所以加了,没想到是这么个小细节花了我一晚上
22楼 坏坏 10小时前
用什么爬虫
直接下一个ExPictureFinder
把网址放进去,,然后点下载,全站都能下来
23楼 小黑啊 10小时前
acpp 发表于 2023-3-29 00:30
返回403,要么cookies问题,要么页面的csrf提取问题。这2个输出看下就知道了。 ...
对,就是一个headers没加cookie导致的
24楼 yrainy 10小时前
看了半天,就着急看你的代码,死活没找到,不给看代码你光文字谁知道啊
25楼 yy10112001 10小时前
......
26楼 小黑啊 9小时前
yy10112001 发表于 2023-3-29 01:00
......
复杂的网站可能确实需要用webdriver,这个网站不需要,就是我细节处理不好headers有问题,
27楼 小黑啊 9小时前
坏坏 发表于 2023-3-29 00:43
用什么爬虫直接下一个ExPictureFinder
目的就是学习python,所以
28楼 小黑啊 9小时前
yrainy 发表于 2023-3-29 00:45
看了半天,就着急看你的代码,死活没找到,不给看代码你光文字谁知道啊
https://drive.google.com/file/d/1dM6s9kOkbrAOL4PZpHx6pQxHx1C0FthB/view?usp=sharing
代码奉上,初次练手,有什么要改进的欢迎提出,勿喷
29楼 dragonfsky 9小时前
一力破十慧,直接上selenium
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。