ToB企服应用市场:ToB评测及商务社交产业平台

标题: 《探索Python Requests中的代理应用与实践》 [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 2024-7-12 13:04
标题: 《探索Python Requests中的代理应用与实践》
requests加代理

高匿API代理

此处使用的小象代理:1元100个,便宜,可以购买尝试加下代理
存活期1到2分钟
  1. import time
  2. import requests
  3. from lxml import etree
  4. response = requests.get('https://api.xiaoxiangdaili.com/ip/get?appKey=1128886144755716096&appSecret=2ICgJR7q&cnt=&wt=json&method=https&city=&province=').json()
  5. for ip in response['data']:
  6.     proxy = f'http://{ip["ip"]}:{ip["port"]}'
  7.     print(proxy)
  8. proxies = {
  9.     'http': proxy,
  10.     'https': proxy
  11. }
  12. # 加代理
  13. # requests是proxies: {
  14. #     'http': proxy,
  15. #     'https': proxy
  16. # }
  17. headers = {
  18.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'
  19. }
  20. source = requests.get('https://tool.lu/ip/', proxies=proxies, headers=headers).content.decode('utf-8')
  21. # source = requests.get('https://tool.lu/ip/', headers=headers).content.decode('utf-8')
  22. IP = etree.HTML(source).xpath("//form[@id='main_form']/p[1]/text()")
  23. print(f"IP: {IP}")
复制代码
注意
  1. proxies = {
  2.     'http': proxy,
  3.     'https': proxy
  4. }
  5. 这个指的是代理服务商提供的代理服务器支持什么请求,两个都加比较保险。
  6. 如果代理服务器支持http,但你发送https请求,代理服务器不会对你的请求进行转发,但是会消耗你的代理IP
复制代码
隧道代理(短效版)

此处用的小象代理,1元1小时,便宜,可以尝试加下代理
介绍:
隧道代理,一分钟自动更换IP,不需要人为搭建代理IP池去加代理IP。
隧道代理有并发请求限制,默认每秒答应 5 个请求。
也可以手动切换代理IP(但切换隔断最低10秒):可以爬取网站报错时尝试手动切换IP。
但一般一分钟自动切换已经很快了
毛病:
  1. from lxml import etree
  2. import requests
  3. target_url = "https://tool.lu/ip/"
  4. proxy_host = 'http-short.xiaoxiangdaili.com'
  5. proxy_port = 10010
  6. proxy_username = '1128907524343746560'
  7. proxy_pwd = 'wZ3WMRtm'
  8. proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
  9.     "host": proxy_host,
  10.     "port": proxy_port,
  11.     "user": proxy_username,
  12.     "pass": proxy_pwd,
  13. }
  14. proxies = {
  15.     'http': proxyMeta,
  16.     'https': proxyMeta,
  17. }
  18. try:
  19.     # 设置手动切换IP
  20.     headers = {
  21.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
  22.         'Proxy-Switch-Ip': 'true'
  23.     }
  24.     source = requests.get(url=target_url, proxies=proxies, headers=headers).content.decode('utf-8')
  25.     IP = etree.HTML(source).xpath("//form[@id='main_form']/p[1]/text()")
  26.     print(f"IP: {IP}")
  27.     # IP: ['你的外网IP地址是:110.88.30.181']
  28.     # IP: ['你的外网IP地址是:49.74.88.38']
  29. except Exception as e:
  30.     print(e)
复制代码
隧道代理(动态转发版)

隧道代理(动态转发)无须自己提取代理IP,在用户隧道内每一个请求通过一个随机 IP 举行转发,也就是ip存活时间不长。
毛病:
适用:
高匿API代理和隧道代理(短效版)

部署一个属于自己的可以获取代理IP的服务器

野生代理

市面上有野生代理,安全性低、稳定性差,不能用
来源:
刷票

刷票程序一般根据IP举行票数计算,可以根据代理IP举行刷票
简易代理IP池

此处用到redis数据库作为IP池
这个只是简易代理IP池,理解其思想即可,后续我会发布一个复杂代理IP池,是一个项目,可以用于实战的。
思想:
add_IP:假如IP池少于5,则补充,补充的IP初始分数为0
get_IP:取出一个代理IP,举行访问,访问失败,则分数加1,若分数小于3则插回IP池,若分数大于等于3则舍弃
更多风雅内容



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4