单独使用 http 站点和 https 站点时,在 meta 中使用 http 代理和 https 代理的正确方法?

Right way of using http proxy and https proxy within meta while using http site and https sites individually?

过去几个小时我一直在努力寻找关于如何在 meta['proxy'] 中分别使用 httphttps 代理的任何具体指导。让我们考虑两个 url http://app1.nu.edu.bd/https://www.yelp.com/,我希望在其中单独使用 http 代理和 https 代理,因为协议不同。对于这个例子,我们可以考虑使用两种类型的代理 1. http 代理 - 62.210.99.150:3838 和 2. https 代理 - 173.212.202.65:80.

现在,我正在尝试如下操作:

同时使用 http://app1.nu.edu.bd/:

meta['proxy'] = 'http://173.212.202.65:80'

https://www.yelp.com/:

meta['proxy'] = 'https://62.210.99.150:3838'

在单独使用 http 站点和 https 站点时,在 meta 中使用 http 代理和 https 代理的正确方法是什么?

注意:在创建上面的 post 之前,我遇到过这个 几次,其中提出了一个非常不同的问题。由于标题有点相似,所以我想提前说明一下。

使用 requests 模块的正确方法应该如下所示:

import requests

PROXIES = {
 "http": 'http://173.212.202.65:80',
 "https": 'https://62.210.99.150:3838',
}

http_url = "http://app1.nu.edu.bd/"
https_url = "https://www.yelp.com/"

response = requests.get(https_url, proxies=PROXIES)

有几种不同的方法可以做到这一点(您可以使用中间件或使用 request['meta']):

proxy = 'http://173.212.202.65:80'
if your_target_url.startswith("https"):
    proxy = 'https://62.210.99.150:3838'
yield scrapy.Request(
    url=your_target_url,
    callback=self.your_callback,
    meta={
        'proxy': proxy,
    },
)