1
panyanyany 2017-05-18 13:40:52 +08:00
https 的请求应该不会经过 http 代理的吧
|
2
HGladIator OP |
3
freeminder 2017-05-18 13:48:38 +08:00
你拿 http 的代理,怎么代理 https 的流量。
|
4
HGladIator OP |
5
freeminder 2017-05-18 13:59:42 +08:00
@HGladIator 好像是的,http://docs.python-requests.org/en/master/user/advanced/#proxies。要写 https:http://给 proxies
|
6
HGladIator OP @freeminder #5 是不是代理设置无效 会用本地的代替? 我随便设的代理 都可以收到响应
|
7
freeminder 2017-05-18 14:26:07 +08:00
@HGladIator 说了你随便写的那个代理根本没生效,因为你设置了 http 请求的代理, 发了一个 https 的请求出去。你把 proxies 那个字段的 https 的 key 也配置成 http 的 key 就知道了
|
8
HGladIator OP @freeminder #7 恩 我配了 好多失败的 我再试试
|
9
pango 2017-05-18 15:05:23 +08:00
proxies = { "http": "http://x.x.x.x:xx", "https": "http://x.x.x.x:xx", }
就行了 |
10
HGladIator OP @pango #9 scrapy 那个 proxy 不能是 dict 的 会报错 我试过
|
11
pango 2017-05-18 15:50:17 +08:00
@HGladIator 你不是在 requests 中用了 proxy 吗?如果是 scrapy 的话不存在 http,https 代理的问题的
|
12
HGladIator OP @pango #11 你看第一个张图 这里的是 http 然后全部超时
|
13
pango 2017-05-18 15:53:52 +08:00
另外明确一下: http 的代理服务器是可以代理 https 的流量的,https 走 http 代理通过的是隧道,对流量本身没有任何影响。
requests 的 proxies = { "http": "http://x.x.x.x:xx", "https": "http://x.x.x.x:xx", }只是用来说明 http,https 分别走哪个代理服务器,但他们走的都可以是同一个 http 代理。 |
14
HGladIator OP @HGladIator #12 谢谢你的解惑
|
15
pango 2017-05-18 16:06:15 +08:00
@HGladIator get_invalid_proxies 和 test_proxies 两个 def 里面你定义了 requests 的 http 流量走 proxy,就像这样子:{ "http": "http://x.x.x.x:xx"},但是接下来却去 get 了一个 https 的网站,这个 https 的网站根本没走任何代理....
估计还是你的代理有问题,你还是按照这个格式: proxies = { "http": "http://x.x.x.x:xx", "https": "http://x.x.x.x:xx", } 来用 requests 测试你的代理吧。 |
16
HGladIator OP 已经改了 跑了两个小时了 还没跑完 绝大部分都是无效的
|
17
HGladIator OP @pango #15 已经改了 跑了两个小时了 还没跑完 绝大部分都是无效的
|
18
BiggerLonger 2017-05-18 17:03:12 +08:00
proxy = {'http': 'http://' + ip} ===========> proxy = {'http': ip} ?
|