如何在Python请求上旋转代理

问题描述 投票:1回答:1

我正在尝试进行一些抓取,但每4次请求就会被阻止。我试图更改代理但错误是一样的。我该怎么做才能正确改变它?

这是我尝试它的一些代码。首先,我从免费网站获得代理。然后我用新代理执行请求,但它不起作用因为我被阻止了。

from fake_useragent import UserAgent
import requests

def get_player(id,proxy):
    ua=UserAgent()
    headers = {'User-Agent':ua.random}

    url='https://www.transfermarkt.es/jadon-sancho/profil/spieler/'+str(id)

    try:
        print(proxy)
        r=requests.get(u,headers=headers,proxies=proxy)
    execpt:

....
code to manage the data
....

Getting proxies

def get_proxies():
    ua=UserAgent()
    headers = {'User-Agent':ua.random}
    url='https://free-proxy-list.net/'

    r=requests.get(url,headers=headers)
    page = BeautifulSoup(r.text, 'html.parser')

    proxies=[]

    for proxy in page.find_all('tr'):
        i=ip=port=0

    for data in proxy.find_all('td'):
        if i==0:
            ip=data.get_text()
        if i==1:
            port=data.get_text()
        i+=1

    if ip!=0 and port!=0:
        proxies+=[{'http':'http://'+ip+':'+port}]

return proxies

Calling functions

proxies=get_proxies()
for i in range(1,100):
    player=get_player(i,proxies[i//4])

....
code to manage the data  
....

我知道代理刮擦很好,因为当我打印然后我看到类似的东西:{'http':'http://88.12.48.61:42365'}我想不被阻止。

python web-scraping proxy python-requests http-proxy
1个回答
1
投票

使用像这样的网站的免费代理的问题是

  1. 网站了解这些并且可能因为您正在使用其中一个而阻止
  2. 你不知道其他人没有把他们与他们做坏事列入黑名单
  3. 该网站可能会使用某种形式的其他标识符根据其他特征(设备指纹识别,代理穿孔等)跟踪代理

不幸的是,除了更复杂(分布在多个设备上,使用VPN / TOR等)之外,你可以做的事情并不多,并且可能会阻止你的IP被阻止以尝试类似DDOS的流量,或者最好看看网站是否有API进入

© www.soinside.com 2019 - 2024. All rights reserved.