IP代理

代理操作

  • 概念:代理服务器
  • 代理服务器的作用

    • fiddler就是一个典型的代理服务器的抓包工具。
    • 代理服务器就是用来转发请求和响应。可以让代理服务器转发请求从而更换请求的原始ip地址。
  • 代理和爬虫之间的关联?

    • 爬虫程序可能会在短时间内对指定的服务器发起高频的请求。服务器端会将该高频请求的ip禁掉。
  • 代理的匿名度

    • 透明:对方服务器知道你使用了代理也知道你的真实ip
    • 匿名:知道你使用了代理,但是不知道你的真是ip
    • 高匿:不知道你使用了代理,更不知道你的真是ip
  • 代理的类型

    • http:只能代理http协议的请求
    • https:代理https协议的请求
  • 如何获取代理服务器?

from lxml import etree
url = 'https://www.xicidaili.com/nn/%d'
all_data = []
for page in range(1,30):
    new_url = format(url%page)
    page_text = requests.get(url=new_url,headers=headers).text
    tree = etree.HTML(page_text)
    #在xpath表达式中不可以出现tbody标签,否则会出问题
    tr_list = tree.xpath('//*[@id="ip_list"]//tr')[1:]
    for tr in tr_list:
        ip_addr = tr.xpath('./td[2]/text()')[0]
        all_data.append(ip_addr)
print(len(all_data))
  • 使用代理机制解除ip被禁的情况
import requests

#1.构建一个代理池
ips_list = []
url = 'http://t.11jsq.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=52&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=2'
page_text = requests.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
ip_list = tree.xpath('//body//text()')
for ip in ip_list:
    dic = {'https':ip}
    ips_list.append(dic)
ips_list
import random

#使用代理池操作
url = 'https://www.xicidaili.com/nn/%d'
all_data = []
for page in range(1,30):
    new_url = format(url%page)
    #proxies={'http':'ip:port'}
    page_text = requests.get(url=new_url,headers=headers,proxies=random.choice(ips_list)).text
    tree = etree.HTML(page_text)
    #在xpath表达式中不可以出现tbody标签,否则会出问题
    tr_list = tree.xpath('//*[@id="ip_list"]//tr')[1:]
    for tr in tr_list:
        ip_addr = tr.xpath('./td[2]/text()')[0]
        all_data.append(ip_addr)
print(len(all_data))
上一篇:角落里的木马查杀之战——站长安全顾问系列话题之三


下一篇:阿里云推出云上首个支持广电级非编NAS产品 4K编辑无卡顿