-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy path05_custom_proxy_function.py
More file actions
37 lines (26 loc) · 1.13 KB
/
Copy path05_custom_proxy_function.py
File metadata and controls
37 lines (26 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from __future__ import annotations
import asyncio
from apify import Actor, Request
async def custom_new_url_function(
session_id: str | None = None,
request: Request | None = None,
) -> str | None:
# Pick a proxy URL based on the session and/or the request being proxied.
if request is not None:
Actor.log.debug(f'Selecting a proxy URL for {request.url}.')
if session_id is not None:
return f'http://my-custom-proxy-supporting-sessions.com?session-id={session_id}'
return 'http://my-custom-proxy-not-supporting-sessions.com'
async def main() -> None:
async with Actor:
proxy_cfg = await Actor.create_proxy_configuration(
new_url_function=custom_new_url_function,
)
if not proxy_cfg:
raise RuntimeError('No proxy configuration available.')
proxy_url_with_session = await proxy_cfg.new_url('a')
Actor.log.info(f'Using proxy URL: {proxy_url_with_session}')
proxy_url_without_session = await proxy_cfg.new_url()
Actor.log.info(f'Using proxy URL: {proxy_url_without_session}')
if __name__ == '__main__':
asyncio.run(main())