python使用代理ip发送http请求
一、需求背景
网站刷票时,经常会遇到限制一个ip只能投票一次的限制,为此需要使用代理ip
二、脚本如下:
1、Proxy_http.py使用代理ip发送httpr的get和post请求
#coding:utf-8
import urllib2,urllib,time,socket,random,Proxy_ip,Useragent
def Visitpage(proxyip,url):
socket.setdefaulttimeout(6)
proxy_support = urllib2.ProxyHandler({'http':proxyip})
user_agent = random.choice(Useragent.user_agents)
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
try:
request = urllib2.Request(url)
request.add_header('Referer','http://www.baidu.com')
request.add_header('User-Agent',user_agent)
html = urllib2.urlopen(request).read()
print html
time.sleep(random.randint(60,180))
except urllib2.URLError,e:
print 'URLError! The bad proxy is %s' %proxyip
except urllib2.HTTPError,e:
print 'HTTPError! The bad proxy is %s' %proxyip
except:
print 'Unknown Errors! The bad proxy is %s ' %proxyip
def Clicklikebutton(proxyip,url,data):
socket.setdefaulttimeout(6)
proxy_support = urllib2.ProxyHandler({'http':proxyip})
user_agent = random.choice(Useragent.user_agents)
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
try:
request = urllib2.Request(url)
request.add_header('Referer','http://www.baidu.com')
request.add_header('User-Agent',user_agent)
data = urllib.urlencode(data)
resp = opener.open(request, data)
print resp.read()
time.sleep(random.randint(60,180))
except urllib2.URLError,e:
print 'URLError! The bad proxy is %s' %proxyip
except urllib2.HTTPError,e:
print 'HTTPError! The bad proxy is %s' %proxyip
except:
print 'Unknown Errors! The bad proxy is %s ' %proxyip
def main():
for i in range(len(Proxy_ip.iplist)):
proxyip = Proxy_ip.iplist[i]
i += 1
print proxyip
for m in range(random.randint(2,4)):
Clicklikebutton(proxyip,'你的post请求地址',{你的post请求参数})
if __name__ == "__main__":
main()
2、Useragent.py文件为agent库
#!/usr/bin/python
#-*- coding:utf-8 -*-
user_agents = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60'
'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50'
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50'
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0'
'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2'
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16'
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0'
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36'
]
3、Proxy_ip.py为读取代理ip文件
#coding:utf-8
iplist = []
datafile = file( "E:\\monkey_test\\http\\1222-1.txt", "r" )
for line in datafile.readlines():
line = line.strip('\n')
iplist.append(line)
4、代理ip的获取
可在以下网站获取http://www.xicidaili.com/(可自行开发脚本爬取网站的ip,容易被封,脚本在此不提供)
也可以购买http://www.daxiangdaili.com/
python使用代理ip发送http请求的更多相关文章
- python检验代理ip是否可用、代理ip检验
python检验代理ip是否可用.代理ip检验 安装相关模块: pip install requests 验证代理IP是否可用脚本: import random import telnetlib im ...
- C#使用代理IP发送请求
https://www.cnblogs.com/benbenfishfish/p/5830149.html 获取可代理的IP https://www.cnblogs.com/ShalenChe/p ...
- [python]爬代理ip v2.0(未完待续)
爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...
- Python爬虫代理IP池
目录[-] 1.问题 2.代理池设计 3.代码模块 4.安装 5.使用 6.最后 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代 ...
- python使用代理ip
python使用代理的方法有两种 1. #先创建代理ip对象 proxy_support = urllib.request.ProxyHandler({'https':'117.64.149.137: ...
- python测试代理IP地址
代码: # -*- coding: utf-8 -*- import urllib,urllib2,re from random import choice from scrapy.selector ...
- Python测试代理ip是否有效
方式一: 通过icanhazip.com返回的ip地址进行检测 import requests '''代理IP地址(高匿)''' proxy = { 'http': 'http://117.85.10 ...
- nodejs通过代理(proxy)发送http请求(request)
有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的: var http = require('htt ...
- python获取代理IP
利用requests库获取代理,用Beautiful库解析网页筛选ip # -*- coding: utf- -*- import requests from bs4 import Beautiful ...
随机推荐
- C 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
最熟悉的陌生人 作者:张慧桥 “枪与玫瑰” 我送走了“蝶恋花”,犹有一种身在梦中的感觉,昨晚的宿醉让我只觉得头晕乎乎的很不舒服,想想自己连澡都还没洗呢,便去洗了个冷水澡. 煮了杯浓浓的咖啡喝了下去,我 ...
- access生成sql脚本,通过VBA调用ADOX
access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...
- 怎么查看bios版本
怎么查看bios版本呢?无需去注册表查看,无需去BIOS中查看,只需要一条简单的命令即可,下面就来一起看一看怎么查看bios版本: Win键+R打开“运行”,然后再“运行”中输入cmd进而打开“cmd ...
- Scss开发临时学习过程
SCSS语法: 假设变量申明带有!default,那么如果在此申明之前没有这个变量的申明,则用这个值,反之如果之前有申明,则用申明的值. ‘...’传递多个参数: @mixin box-shadow( ...
- windows2003 IIS6.0右键属性没有asp.net选项卡的解决办法
windows2003 IIS6.0右键属性没有asp.net选项卡的解决办法 1,如果是只安装了.net framework 1.1 在iis中是不显示那个选项卡的.默认就会支持asp.net1.1 ...
- jquery 百度搜索
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 【学】AngularJS日记(3)- $apply(), run()方法
$scope.$apply()方法可以强制$apply()里运行的函数所改变的model里的数据直接反应到view里,因为在angular的环境中,有时会用到原生js或者jquery的时候,这些行为有 ...
- 启用vim-ruby的rails complete (macvim)
macvim启用rails complete 用vim已经很久了, 一直用spf13也挺好的, 最近遇到要处理一个遗留项目, 数据库字段太多, 因此折腾了一下配置好vim的ruby-completio ...
- Spark 1.6以后的内存管理机制
Spark 内部管理机制 Spark的内存管理自从1.6开始改变.老的内存管理实现自自staticMemoryManager类,然而现在它被称之为"legacy". " ...
- CE程序
注:开发工具用VS2008 安装Windows mobile设备中心进行调试. 项目平台 1.窗体属性设置,然后将size改成238, 320 2.效果 3.调试过程选择“部署” 4.配置文件的简单读 ...