请选择 进入手机版 | 继续访问电脑版
查看: 305|回复: 1

[其他问题] 动态IP代理,自动更换IP代理,解决采集被封问题

[复制链接]
  • TA的每日心情
    开心
    2019-1-5 12:35
  • 2

    主题

    3

    帖子

    53

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    53
    威望
    3
    金钱
    36
    贡献
    8
    注册时间
    2019-1-4
    发表于 2019-1-5 12:32:56 | 显示全部楼层 |阅读模式
              最近又不少同学问我,采集代理的问题, 然后我就在这里重新把我之前的写脚本的思路报出来,
              首先采用一台拨号的动态vps, 每次拨号更换IP,然后通过DDNS蒋更改的ip反馈到域名去,这样通过域名访问的时候,就可以得到实时的得到动态VPS的IP,然后在动态vps上搭建一套代理(tinyproxy或者squid一类的都可以),然后就可以实现代理访问了,
              技术总结写完了,现在具体操作步骤,
              准备动态vps , 宽带账户 密码, 动态二级域名,ddns 服务商账户密码 ,当然需要准备xshell工具,
              考虑到很多人不会在Linux拨号,所以准备了Linux 拨号脚本

    1. #!/bin/bash

    2. ppp_user=$1
    3. password=$2
    4. eth=$3

    5. [ -z "$ppp_user" ]&&{
    6. echo "没有指定拨号账号..."
    7. echo "示例: $0 user password ethx"
    8. exit 0
    9. }

    10. [ -z "$password" ]&&{
    11. echo "没有指定拨号密码..."
    12. echo "示例: $0 user password ethx"
    13. exit 0
    14. }

    15. [ -z "$eth" ]&&{
    16. echo "没有指定拨号网卡..."
    17. echo "示例: $0 user password ethx"
    18. exit 0
    19. }

    20. echo "请等待,正在进行配置..."

    21. ppps=`ps -ef|grep ppp0|grep -v "grep"|wc -l`
    22. if [ $ppps -gt 0 ];then
    23.     ifdown ppp0;
    24. fi


    25. if [ -d "/etc/sysconfig/network-scripts/ifcfg-ppp0" ];then
    26.     echo "" > /etc/sysconfig/network-scripts/ifcfg-ppp0
    27. else
    28.     touch /etc/sysconfig/network-scripts/ifcfg-ppp0
    29. fi

    30. echo "USERCTL=yes" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    31. echo "BOOTPROTO=dialup" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    32. echo "NAME=DSLppp0" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    33. echo "DEVICE=ppp0" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    34. echo "TYPE=xDSL" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    35. echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    36. echo "PIDFILE=/var/run/pppoe-adsl.pid" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    37. echo "FIREWALL=NONE" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    38. echo "PING=." >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    39. echo "PPPOE_TIMEOUT=80" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    40. echo "LCP_FAILURE=3" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    41. echo "LCP_INTERVAL=20" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    42. echo "CLAMPMSS=1412" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    43. echo "CONNECT_POLL=6" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    44. echo "CONNECT_TIMEOUT=60" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    45. echo "DEFROUTE=yes" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    46. echo "SYNCHRONOUS=no" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    47. echo "ETH=$eth" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    48. echo "PROVIDER=DSLppp0" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    49. echo "USER=$ppp_user" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    50. echo "PEERDNS=no" >> /etc/sysconfig/network-scripts/ifcfg-ppp0
    51. echo "DEMAND=no" >> /etc/sysconfig/network-scripts/ifcfg-ppp0


    52. line1=`cat /etc/ppp/chap-secrets|grep "*"|wc -l`

    53. if [ $line1 -lt 1 ];then
    54.     echo ""$ppp_user"    *    "$password"" >  /etc/ppp/chap-secrets
    55. else
    56.     user=`cat /etc/ppp/chap-secrets|grep "*"|awk '{print$1}'`
    57.     passwd=`cat /etc/ppp/chap-secrets|grep "*"|awk '{print$3}'`
    58.     sed -i "s/$user/"$ppp_user"/g" /etc/ppp/chap-secrets
    59.     sed -i "s/$passwd/"$password"/g" /etc/ppp/chap-secrets
    60. fi

    61. line2=`cat /etc/ppp/pap-secrets|grep "*"|wc -l`

    62. if [ $line1 -lt 1 ];then
    63.         echo ""$ppp_user"     *       "$password"" >> /etc/ppp/pap-secrets
    64. else
    65.         user=`cat /etc/ppp/pap-secrets|grep "*"|awk '{print$1}'`
    66.         passwd=`cat /etc/ppp/pap-secrets|grep "*"|awk '{print$3}'`
    67.         sed -i "s/$user/"$ppp_user"/g" /etc/ppp/pap-secrets
    68.         sed -i "s/$passwd/"$password"/g" /etc/ppp/pap-secrets
    69. fi


    70. ck=`cat /sbin/ifup|grep "routeok"|wc -l`

    71. if [ $ck -lt 1 ];then
    72.         sed -i "s/exec \${OTHERSCRIPT} \${CONFIG} \$2//g" /sbin/ifup

    73.         echo "#route" >> /sbin/ifup
    74.         echo "{" >> /sbin/ifup
    75.         echo "sleep 10" >> /sbin/ifup
    76.         echo "route_ip=\`/sbin/pppoe-status|grep "inet"|awk '{print\$4}'|awk -F\/ '{print\$1}'\`" >> /sbin/ifup
    77.         echo "len=\`echo \$route_ip|wc -c\`" >> /sbin/ifup
    78.         echo "if [ \$len -gt 10 ];then" >> /sbin/ifup
    79.         echo "        route add default gw \$route_ip dev ppp0" >> /sbin/ifup
    80.         echo "fi" >> /sbin/ifup
    81.         echo "}&" >> /sbin/ifup
    82.         echo "" >> /sbin/ifup
    83.         echo "exec \${OTHERSCRIPT} \${CONFIG} \$2" >> /sbin/ifup
    84.         echo "" >> /sbin/ifup
    85.         echo "#routeok" >> /sbin/ifup
    86. fi

    87. ifup ppp0
    88. if [ $? -eq 0 ];then
    89.     echo "ifup ok"
    90. else
    91.     echo "配置失败,请重新配置,比如重新选择网卡或者确认账号密码?"
    92. fi
    复制代码
    登陆拨号vps 之后将上面脚本保存到 linux 以 .sh 结尾
    1. sh init.sh 账号 密码 链接网卡
    复制代码
    还有常见的一个问题, 路由问题,报号链接[color=rgba(0, 0, 0, 0.8)]的网卡配置要把defaultroute=no ppp0的改为yes,否则重启网卡会失去路由造成ping不通外网,能ping的通网关
    [color=rgba(0, 0, 0, 0.8)]最后贴出来 报号脚本吧
    1. #! /bin/sh
    2. #change ip and change domian ip
    3. # by waitli
    4. source /etc/profile

    5. DATE=$(date +%Y%m%d%H%M%S)
    6. function ppoe
    7. {
    8.   /usr/sbin/pppoe-stop
    9.   sleep 5s
    10.   /usr/sbin/pppoe-start
    11.   sleep 10s
    12.   /usr/bin/ping -c 1 xxxxx.xxxxx.net > /dev/null 2>&1  
    13.   if [ $? -eq 0 ];then  
    14.      echo "networkok ">/opt/ip.log
    15.   else  
    16.      ppoe
    17.   fi
    18. }
    19. ppoe
    20. sleep 1s
    21. function change
    22.   {
    23.     /usr/bin/lynx -mime_header -auth=xxxx:xxx "http://members.xxxxx.net/dyndns/update?system=dynd
    24. ns&hostname=porxy.xxxxxx.net"  > /dev/null 2>&1
    25.   
    26.    /usr/bin/ping -c 1 porxy.xxxxx.net  > /dev/null 2>&1
    27.    if [ $? -eq 0 ];then
    28.        echo "domainok ">/opt/ip.log
    29.        echo $DATE >>/opt/ip.log
    30.    else
    31.         sleep 10s
    32.         change
    33.    fi
    34.   }

    35. change
    复制代码
    要修改三处,自己申请的域名,向pubyun 汇报自己ip时候的账号密码,自己检测网络是否正常的域名我这边就不多赘述了,
    提供安装服务
    搭建50/月,送一个月维护。 联系qq:1025229789
    原文出处 http://www.waitli.top

    官方QQ群:679313004 不定期分享福利

    8斗社区邀请码的获取途径有哪些? (加QQ:2986997235 免费获取邀请码)

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

  • TA的每日心情
    难过
    2019-3-2 08:35
  • 15

    主题

    29

    帖子

    39万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    390620
    威望
    100028
    金钱
    89328
    贡献
    101207
    注册时间
    1970-1-1

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    QQ
    发表于 2019-1-5 13:37:29 | 显示全部楼层
    感谢大佬分享!

    官方QQ群:679313004 不定期分享福利

    8斗社区邀请码的获取途径有哪些? (加QQ:2986997235 免费获取邀请码)

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则