python - Comment vérifier quel type d'anti-crawler est utilisé sur une URL
ringa_lee
ringa_lee 2017-06-12 09:27:51
0
4
1299

Site Web : https://www.nvshens.com/g/22377/. Ouvrez le site Web directement avec le navigateur puis faites un clic droit sur l'image pour la télécharger. Ensuite, l'image directement demandée par mon robot a été bloquée, et. puis j'ai changé les en-têtes et configuré un proxy IP, mais cela n'a toujours pas fonctionné. Mais en regardant la capture de paquets, il ne s’agit pas de données chargées dynamiquement ! ! ! Veuillez répondre = =

ringa_lee
ringa_lee

ringa_lee

répondre à tous(4)
过去多啦不再A梦

La fille est plutôt jolie.
Il peut en effet être ouvert par un clic droit, mais après actualisation, il devient une image hyperliée. Généralement, pour éviter les hotlinking, le serveur vérifiera si le Referer字段,这就是为什么刷新后就不是原图的原因(刷新后Referer dans l'en-tête de la requête a changé).

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)
学霸

Avez-vous manqué des paramètres en capturant le paquet lors de la prise de la photo ?

我想大声告诉你

Je regardais juste le contenu du site et j'ai presque oublié qu'il était officiel.
Vous pouvez suivre toutes les informations que vous avez demandées

Alors essayez-le

女神的闺蜜爱上我

Référent Selon la conception de ce site Web, chaque page devrait être plus conforme au comportement de se faire passer pour un être humain, au lieu d'utiliser un seul référent
Ce qui suit est le code complet qui peut être exécuté pour capturer toutes les images à la page 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])
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal