数据抓取使用HTTP代理ip代码示例
admin
2023-01-31 16:28:04
0

HTTP Proxy Demo 代码

1、Python

#! -*- encoding:utf-8 -*-

import requests

# 要访问的目标页面
targetUrl = "http://ip.hahado.cn/ip"

# 代理服务器
proxyHost = "ip.hahado.cn"
proxyPort = "39010"

# 代理隧道验证信息
proxyUser = "username"
proxyPass = "password"

proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host" : proxyHost,
    "port" : proxyPort,
    "user" : proxyUser,
    "pass" : proxyPass,
}

proxies = {
    "http"  : proxyMeta,
    "https" : proxyMeta,
}

resp = requests.get(targetUrl, proxies=proxies)

print resp.status_code
print resp.text

2、C Sharp

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://ip.hahado.cn/ip");

WebProxy myProxy = new WebProxy();

Uri newUri = new Uri("http://ip.hahado.cn:39010");

myProxy.Address = newUri;

myProxy.Credentials = new NetworkCredential("username", "password");

request.Proxy = myProxy;

3、PHP

// 要访问的目标页面
$targetUrl = "http://ip.hahado.cn/ip";
//$targetUrl = "http://ip.hahado.cn/switch-ip";
//$targetUrl = "http://ip.hahado.cn/current-ip";
// 代理服务器
define("PROXY_SERVER", "ip.hahado.cn:39010");
// 隧道身份信息
define("PROXY_USER", "username");
define("PROXY_PASS", "password");
$proxyAuth = base64_encode(PROXY_USER . ":" . PROXY_PASS);
$headers = implode("\r\n", [
    "Proxy-Authorization: Basic {$proxyAuth}",
    "Proxy-Switch-Ip: yes",
]);
$options = [
    "http" => [
        "proxy"  => $proxyServer,
        "header" => $headers,
        "method" => "GET",
    ],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);

4、JAVA

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;

class ProxyAuthenticator extends Authenticator {
    private String user, password;

    public ProxyAuthenticator(String user, String password) {
        this.user     = user;
        this.password = password;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, password.toCharArray());
    }
}

/**
 * 注意:下面代码仅仅实现HTTP请求链接,每一次请求都是无状态保留的,仅仅是这次请求是更换IP的,如果下次请求的IP地址会改变
 * 如果是多线程访问的话,只要将下面的代码嵌入到你自己的业务逻辑里面,那么每次都会用新的IP进行访问,如果担心IP有重复,
 * 自己可以维护IP的使用情况,并做校验。
 */
public class ProxyDemo {
    public static void main(String args[]) throws Exception {
        // 要访问的目标页面
        String targetUrl = "http://ip.hahado.cn/ip";
        //String targetUrl = "http://ip.hahado.cn/switch-ip";
        //String targetUrl = "http://ip.hahado.cn/current-ip";

        // 代理服务器
        String proxyServer = "ip.hahado.cn";
        int proxyPort      = 39010;

        // 代理隧道验证信息
        String proxyUser  = "username";
        String proxyPass  = "password";

        try {
            URL url = new URL(targetUrl);

            Authenticator.setDefault(new ProxyAuthenticator(proxyUser, proxyPass));

            // 创建代理服务器地址对象
            InetSocketAddress addr = new InetSocketAddress(proxyServer, proxyPort);
            // 创建HTTP类型代理对象
            Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);

            // 设置通过代理访问目标页面
            HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
            // 设置IP切换头
            connection.setRequestProperty("Proxy-Switch-Ip","yes");

            // 解析返回数据
            byte[] response = readStream(connection.getInputStream());

            System.out.println(new String(response));
        } catch (Exception e) {
            System.out.println(e.getLocalizedMessage());
        }
    }

    /**
     * 将输入流转换成字符串
     *
     * @param inStream
     * @return
     * @throws Exception
     */
    public static byte[] readStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;

        while ((len = inStream.read(buffer)) != -1) {
            outSteam.write(buffer, 0, len);
        }
        outSteam.close();
        inStream.close();

        return outSteam.toByteArray();
    }
}

5、golang

package main

import (
    "net/url"
    "net/http"
    "bytes"
    "fmt"
    "io/ioutil"
)

const ProxyServer = "ip.hahado.cn:39010"

type ProxyAuth struct {
    License string
    SecretKey string
}

func (p ProxyAuth) ProxyClient() http.Client {
    proxyURL, _ := url.Parse("http://" + p.License + ":" + p.SecretKey + "@" + ProxyServer)
    return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}}
}

func main()  {
    targetURI := "http://ip.hahaod.cn/ip"
    //targetURI := "http://ip.hahaod.cn/switch-ip"
    //targetURI := "http://ip.hahaod.cn/current-ip"

    // 初始化 proxy http client
    client := ProxyAuth{License: "username", SecretKey: "password"}.ProxyClient()

    request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``)))

    // 切换IP (只支持 HTTP)
    request.Header.Set("Proxy-Switch-Ip", "yes")

    response, err := client.Do(request)

    if err != nil {
        panic("failed to connect: " + err.Error())
    } else {
        bodyByte, err := ioutil.ReadAll(response.Body)
        if err != nil {
            fmt.Println("读取 Body 时出错", err)
            return
        }
        response.Body.Close()

        body := string(bodyByte)

        fmt.Println("Response Status:", response.Status)
        fmt.Println("Response Header:", response.Header)
        fmt.Println("Response Body:\n", body)
    }
}
    更多代理设置教材请复制连接打开:https://v.duoip.cn/customer/signup/?sale=xujinyang1991

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...