怎么查看网址做的是什么反爬虫

发布于 2022-09-04 23:55:54 字数 351 浏览 23 评论 0

网址:https://www.nvshens.com/g/22377/,该网站直接游览器打开然后,点击图片右键是可以下载的,然后我爬虫直接请求下来的图片就已经被屏蔽了,然后我改了headers跟设置了ip代理,还是没用。但抓包来看也不是动态加载的数据呀!!!求解答= =

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

§对你不离不弃 2022-09-11 23:55:54

妹子挺漂亮的哈。
右键确实能打开,但是刷新一下就成盗链图片了。一般防盗链,服务器端是会检查请求头里面的Referer字段,这就是为什么刷新后就不是原图的原因(刷新后Referer变了)。
图片描述

img_url = "https://t1.onvshen.com:85/gallery/21501/22377/s/003.jpg"
r = requests.get(img_url, headers={'Referer':"https://www.nvshens.com/g/22377/"}).content
with open("00.jpg",'wb') as f:
    f.write(r)
肩上的翅膀 2022-09-11 23:55:54

获取图片时抓包看漏什么参数没。

一抹微笑 2022-09-11 23:55:54

光顾着看网站内容,差点忘记了正式了。
你可以把你请求的信息全部按照

clipboard.png

然后在试试

故事↓在人 2022-09-11 23:55:54

Referer 照这网站的设计应该是各别的页面会比较符合假装是人的行为,而并不是用单一的Referer
以下是完整能跑的代码,抓18页所有的图片

# Putting all together
def url_guess_src_large (u):
    return ("https://www.nvshens.com/img.html?img=" +  '/'.join(u.split('/s/')))
# 下载函数
def get_img_using_requests(url, fn ):
    import shutil
    headers ['Referer'] = url_guess_src_large(url) #"https://www.nvshens.com/g/22377/" 
    print (headers)
    response = requests.get(url, headers = headers, stream=True)
    with open(fn, 'wb') as out_file:
        shutil.copyfileobj(response.raw, out_file)
    del response

import requests
# 用xpath擷取內容
from lxml import etree
url_ = 'https://www.nvshens.com/g/22377/{p}.html'  
headers = {
    "Connection" : "close",  # one way to cover tracks
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2900.1 Iron Safari/537.36}"
}

for i in range(1,18+1):
    url = url_.format(p=i)
    r = requests.get(url, headers=headers)
    html = requests.get(url,headers=headers).content.decode('utf-8')
    selector = etree.HTML(html)
    xpaths = '//*[@id="hgallery"]/img/@src'
    content = [x for x in selector.xpath(item)]
    urls_2get = [url_guess_src_large(x) for x in content]
    filenames = [os.path.split(x)[0].split('/gallery/')[1].replace("/","_") + "_" + os.path.split(x)[1] for x in urls_2get]
    for i, x in enumerate(content):
        get_img_using_requests (content[i], filenames[i])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文