刮擦的图像以某种方式受到保护,不会刮擦

时间:2019-12-25 13:26:28

标签: python image beautifulsoup

我正在尝试从一个网站上抓取图像URL并在另一个网站上显示图像(使用BeautifulSoup),但是有问题的网站(yupoo.com)具有某种保护措施,如果您不这样做,则可以从其服务器加载图像不要浏览他们的网站。

如何重现我的问题:

您无法加载此图像:  https://photo.yupoo.com/0832club_v/0058b582/96f83ddb.jpeg

现在访问此网站:https://0832club.x.yupoo.com/29611853?uid=1

现在打开上面的链接  “ https://photo.yupoo.com/0832club_v/0058b582/96f83ddb.jpeg”和  它现在可以工作的某些原因...

我检查了cookie和其他东西,但我真的不明白它们如何保护图片

1 个答案:

答案 0 :(得分:0)

您必须发送标头<div class = "row" style="display: flex;align-items: center;"> <div class = "col-md-8"> <h3><%= link_to item.title, item , id: "font-colour" %></h3> <p><%= if item.description.length > 70 item.description[0..70].gsub(/\s\w+\s*$/, '...') else item.description end %></p> </div> <%= link_to complete_item_path(item), id: "font-colour", method: :patch do %> <i class="fa fa-square-o fa-2x align-center"></i> <% end %> <div class = "col-md-1"> <%= link_to item_path(item), id: "font-colour", method: :delete do %> <i class="fa fa-trash fa-2x align-center"></i> <%end%> </div> </div>,然后服务器认为它是从页面referer加载的。

https://0832club.x.yupoo.com/29611853?uid=1

import requests url = 'https://photo.yupoo.com/0832club_v/0058b582/96f83ddb.jpeg' headers = { 'referer': 'Referer: https://0832club.x.yupoo.com/29611853?uid=1' } r = requests.get(url, headers=headers) print(r.content[:100]) # you can see string `JFIF` or `GIF` in content f = open('output.jpg', 'wb') f.write(r.content) f.close() 中,我在referer中看到字符串JFIF,因此它发送了content。如果没有JPG,我会在referer中看到字符串GIF,所以它会发送content


您还可以检查

GIF

使用print(r.headers['Content-Type']) 返回referer,不使用image/jpeg返回referer